services: backend: build: context: . dockerfile: Dockerfile.dev ports: - 3000 depends_on: db: condition: service_healthy environment: DATABASE_URL: postgres://postgres:postgres@db:5432/postgres RAILS_ENV: development tty: true stdin_open: true healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/up"] interval: 10s timeout: 5s retries: 5 volumes: - .:/rails workers: build: context: . dockerfile: Dockerfile.dev entrypoint: bin/jobs depends_on: db: condition: service_healthy environment: DATABASE_URL: postgres://postgres:postgres@db:5432/postgres RAILS_ENV: development volumes: - .:/rails frontend: build: context: ../wedding-planner-frontend dockerfile: Dockerfile.dev ports: - 3000 healthcheck: test: wget -qO - http://localhost:3000/api/health || exit 1 interval: 10s timeout: 5s retries: 5 depends_on: - backend volumes: - ../wedding-planner-frontend/:/app libre-captcha: image: librecaptcha/lc-core:latest volumes: - "./tmp/libre-captcha-data:/lc-core/data" - "./libre-captcha-config.json:/lc-core/data/config.json" ports: - 8888 nginx: image: nginx:latest ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro depends_on: frontend: condition: service_healthy backend: condition: service_healthy db: image: postgres:17 ports: - 5432 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres healthcheck: test: ['CMD-SHELL', 'pg_isready -U postgres'] interval: 10s timeout: 5s retries: 5