x-app-build: &app-build context: . dockerfile: docker/Dockerfile args: INSTALL_DEV: "true" services: db: image: postgres:15.10 container_name: mostovik_db restart: unless-stopped env_file: - .env.dev environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - ./data/db:/var/lib/postgresql/data - ./docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 3s retries: 10 redis: image: redis:7-alpine container_name: mostovik_redis restart: unless-stopped ports: - "6379:6379" volumes: - ./data/redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 10 migrate: build: <<: *app-build target: runtime-web container_name: mostovik_migrate env_file: - .env.dev depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: - ./input:/app/input command: ["/app/docker/scripts/migrate.sh"] restart: "no" web: build: <<: *app-build target: runtime-web container_name: mostovik_web restart: unless-stopped env_file: - .env.dev depends_on: migrate: condition: service_completed_successfully ports: - "8000:8000" volumes: - ./src:/app/src - ./logs:/app/logs - ./media:/app/media - ./staticfiles:/app/staticfiles - ./input:/app/input command: ["/app/docker/scripts/start-web-dev.sh"] celery_worker: build: <<: *app-build target: runtime-celery container_name: mostovik_celery_worker restart: unless-stopped environment: CELERY_WORKER_CONCURRENCY: "1" CELERY_WORKER_MAX_MEMORY_PER_CHILD_KB: "3145728" env_file: - .env.dev depends_on: migrate: condition: service_completed_successfully mem_limit: 3g memswap_limit: 3g volumes: - ./src:/app/src - ./logs:/app/logs - ./input:/app/input command: ["/app/docker/scripts/start-celery-worker.sh"] celery_beat: build: <<: *app-build target: runtime-celery container_name: mostovik_celery_beat restart: unless-stopped env_file: - .env.dev depends_on: migrate: condition: service_completed_successfully volumes: - ./src:/app/src - ./logs:/app/logs - ./input:/app/input command: ["/app/docker/scripts/start-celery-beat.sh"]