version: '3' services: frontend: labels: shipyard.route: '/' build: 'frontend' environment: CI: 'true' DANGEROUSLY_DISABLE_HOST_CHECK: 'true' env_file: - frontend/frontend.env volumes: - './frontend/src:/app/src' - './frontend/public:/app/public' ports: - '3000:3000' backend: labels: shipyard.route: '/api' build: 'backend' environment: DATABASE_URL: 'postgres://obscure-user:obscure-password@postgres/app' DEV: ${DEV} FLASK_DEBUG: '1' LOCALSTACK_HOST: 'localstack' volumes: - './backend/filesystem/entrypoints:/entrypoints:ro' - './backend/migrations:/srv/migrations' - './backend/src:/srv/src:ro' ports: - '8080:8080' worker: labels: shipyard.init: 'poetry run flask db upgrade' build: 'backend' environment: DATABASE_URL: 'postgres://obscure-user:obscure-password@postgres/app' DEV: ${DEV} FLASK_DEBUG: '1' LOCALSTACK_HOST: 'localstack' command: '/entrypoints/worker.sh' volumes: - './backend/filesystem/entrypoints:/entrypoints:ro' - './backend/migrations:/srv/migrations' - './backend/src:/srv/src:ro' postgres: image: 'postgres:9.6-alpine' environment: POSTGRES_USER: 'obscure-user' POSTGRES_PASSWORD: 'obscure-password' POSTGRES_DB: 'app' PGDATA: '/var/lib/postgresql/data/pgdata' volumes: - 'postgres:/var/lib/postgresql/data' ports: - '5432' redis: image: 'redis:5.0-alpine' ports: - '6379' localstack: image: 'localstack/localstack:1.3.0' environment: - DATA_DIR=/var/lib/localstack volumes: - 'localstack:/var/lib/localstack' ports: - '4566' volumes: postgres: localstack: