From b55ea02c0553c287e04271eb6e07ba525270ad45 Mon Sep 17 00:00:00 2001 From: PPawlowski Date: Fri, 27 Mar 2026 13:26:08 +0100 Subject: [PATCH] Remove wuick start docker compose file and references --- .github/workflows/build-containers.yml | 1 - .github/workflows/test-docker-compose.yaml | 78 -------- docker-compose-quick-start.yml | 198 --------------------- 3 files changed, 277 deletions(-) delete mode 100644 docker-compose-quick-start.yml diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index d6e1df2..b90b72a 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -72,4 +72,3 @@ jobs: with: files: | docker-compose.yml - docker-compose-quick-start.yml diff --git a/.github/workflows/test-docker-compose.yaml b/.github/workflows/test-docker-compose.yaml index 39fdd6c..6991b84 100644 --- a/.github/workflows/test-docker-compose.yaml +++ b/.github/workflows/test-docker-compose.yaml @@ -131,81 +131,3 @@ jobs: - name: Tear down the stack if: always() run: docker compose down - - - quick-start-stack: - name: Test quick-start stack - needs: wait-for-containers-build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - - name: Create .env file for default settings - run: | - cp .env.example .env - sed -i 's/DOMAIN=.*/DOMAIN=ci-example.com/' .env - - - name: Create stack - uses: hoverkraft-tech/compose-action@4894d2492015c1774ee5a13a95b1072093087ec3 # v2.5.0 - with: - compose-file: "./docker-compose-quick-start.yml" - up-flags: "-d --quiet-pull" - - - name: Check readiness - run: | - has_healthcheck() { - local container=$1 - local health_status=$(docker inspect --format='{{if .Config.Healthcheck}}true{{else}}false{{end}}' "$container") - [ "$health_status" = "true" ] - } - - check_containers() { - containers=$(docker compose ps -q) - for container in $containers; do - container_name=$(docker inspect --format '{{.Name}}' "$container" | sed 's/\///') - container_ip=$(docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$container") - - if has_healthcheck "$container"; then - echo "Container has healthcheck defined" - status=$(docker inspect --format "{{.State.Health.Status}}" "$container") - if [ "$status" != "healthy" ]; then - echo "❌ Container $container_name is not healthy (status: $status)" - return 1 - fi - else - running=$(docker inspect --format "{{.State.Running}}" "$container") - if [ "$running" != "true" ]; then - echo "❌ Container $container_name is not running" - return 1 - fi - fi - - echo "✅ Container $container_name is ready" - done - return 0 - } - - # Wait for containers with timeout - TIMEOUT=300 # 5 minutes timeout - ELAPSED=0 - SLEEP_TIME=10 - - until check_containers; do - if [ $ELAPSED -ge $TIMEOUT ]; then - echo "❌ Timeout waiting for containers to be ready" - docker compose ps - docker compose logs - exit 1 - fi - echo "⏳ Waiting for containers... ($ELAPSED seconds elapsed)" - sleep $SLEEP_TIME - ELAPSED=$((ELAPSED + SLEEP_TIME)) - done - - echo "✅ All containers are ready!" - docker compose ps - - - name: Tear down the stack - if: always() - run: docker compose down diff --git a/docker-compose-quick-start.yml b/docker-compose-quick-start.yml deleted file mode 100644 index 2e27a8d..0000000 --- a/docker-compose-quick-start.yml +++ /dev/null @@ -1,198 +0,0 @@ -name: flowfuse - -configs: - flowfuse: - content: | - port: 3000 - host: 0.0.0.0 - domain: ${DOMAIN:?error} - base_url: http://forge.${DOMAIN:?error} - api_url: http://forge:3000 - db: - logging: false - type: postgres - host: postgres - database: flowfuse - user: forge - password: secret - driver: - type: docker - options: - socket: /tmp/docker.sock - storage: - enabled: true - broker: - url: mqtt://broker:1883 - public_url: ws://mqtt.${DOMAIN:?error} - fileStore: - url: http://file-server:3001 - flowfuse_broker: - content: | - per_listener_settings false - allow_anonymous false - listener 1883 0.0.0.0 - listener 1884 0.0.0.0 - protocol websockets - auth_plugin /mosquitto/go-auth.so - auth_opt_backends http - auth_opt_hasher bcrypt - auth_opt_cache true - auth_opt_auth_cache_seconds 30 - auth_opt_acl_cache_seconds 90 - auth_opt_auth_jitter_second 3 - auth_opt_acl_jitter_seconds 5 - auth_opt_http_host forge - auth_opt_http_port 3000 - auth_opt_http_getuser_uri /api/comms/auth/client - auth_opt_http_aclcheck_uri /api/comms/auth/acl - flowfuse_storage: - content: | - port: 3001 - host: 0.0.0.0 - base_url: http://forge:3000 - driver: - type: localfs - quota: 104857600 - options: - root: var/root - context: - type: sequelize - quota: 1048576 - options: - type: postgres - host: postgres - database: ff-context - username: forge - password: secret - nginx: - content: | - client_max_body_size 5m; - postgres_db_setup: - content: | - #!/bin/sh - set -e - psql -v ON_ERROR_STOP=1 -U root <<-ESQL - CREATE USER forge WITH PASSWORD 'secret'; - CREATE DATABASE flowfuse; - GRANT ALL PRIVILEGES ON DATABASE flowfuse TO forge; - ESQL - postgres_context_setup: - content: | - #!/bin/sh - set -e - psql -v ON_ERROR_STOP=1 -U root <<-ESQL - SELECT 'CREATE DATABASE "ff-context"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'ff-context')\gexec - GRANT ALL PRIVILEGES ON DATABASE "ff-context" TO "forge"; - ESQL - -services: - nginx: - image: nginxproxy/nginx-proxy:1.6.0 - networks: - - flowforge - restart: always - volumes: - - "/var/run/docker.sock:/tmp/docker.sock:ro" - configs: - - source: nginx - target: /etc/nginx/conf.d/my_proxy.conf - ports: - - "80:80" - healthcheck: - test: "curl -s -I http://localhost | head -n 1 | grep -q 503" - interval: 5s - timeout: 5s - retries: 3 - start_period: 10s - - postgres: - image: postgres:14 - networks: - - flowforge - restart: always - environment: - POSTGRES_PASSWORD: secret - POSTGRES_USER: root - configs: - - source: postgres_db_setup - target: /docker-entrypoint-initdb.d/01-setup-db.sh - mode: 0664 - - source: postgres_context_setup - target: /docker-entrypoint-initdb.d/02-setup-context-db.sh - mode: 0664 - volumes: - - db:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -U root"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 10s - - broker: - image: "iegomez/mosquitto-go-auth" - networks: - - flowforge - restart: always - ulimits: - nofile: 2048 - environment: - - "VIRTUAL_HOST=mqtt.${DOMAIN:?error}" - - "VIRTUAL_PORT=1884" - - "LETSENCRYPT_HOST=mqtt.${DOMAIN:?error}" - configs: - - source: flowfuse_broker - target: /etc/mosquitto/mosquitto.conf - mode: 0664 - - forge: - image: "flowfuse/forge-docker" - networks: - - flowforge - restart: always - environment: - - "VIRTUAL_HOST=forge.${DOMAIN:?error}" - - "LETSENCRYPT_HOST=forge.${DOMAIN:?error}" - configs: - - source: flowfuse - target: /usr/src/forge/etc/flowforge.yml - volumes: - - "/var/run/docker.sock:/tmp/docker.sock" - - flowfuse-persistent-storage:/opt/persistent-storage - depends_on: - - "postgres" - - "nginx" - - "broker" - healthcheck: - test: ["CMD", "node", "-e", "require('http').get('http://127.0.0.1:3000/health', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"] - interval: 5s - timeout: 5s - retries: 3 - start_period: 10s - - file-server: - image: "flowfuse/file-server" - networks: - - flowforge - restart: always - configs: - - source: flowfuse_storage - target: /usr/src/flowforge-file-server/etc/flowforge-storage.yml - volumes: - - fileStorage:/usr/src/flowforge-file-server/var/root - depends_on: - - "forge" - healthcheck: - test: ["CMD", "node", "-e", "require('http').get('http://127.0.0.1:3001/health', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"] - interval: 5s - timeout: 5s - retries: 3 - start_period: 10s - -networks: - flowforge: - -volumes: - flowfuse-persistent-storage: - db: - fileStorage: