services: mysql: image: mysql:8.0 container_name: gotik-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: feedsystem TZ: Asia/Shanghai ports: - "3307:3306" volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p123456"] interval: 10s timeout: 5s retries: 10 start_period: 20s redis: image: redis:7-alpine container_name: gotik-redis restart: unless-stopped command: ["redis-server", "--requirepass", "pass4Redis"] ports: - "6380:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "-a", "pass4Redis", "ping"] interval: 10s timeout: 5s retries: 10 rabbitmq: image: rabbitmq:3-management container_name: gotik-rabbitmq restart: unless-stopped environment: RABBITMQ_DEFAULT_USER: guest RABBITMQ_DEFAULT_PASS: guest TZ: Asia/Shanghai ports: - "5673:5672" - "15673:15672" volumes: - rabbitmq_data:/var/lib/rabbitmq healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] interval: 10s timeout: 5s retries: 10 start_period: 20s app: build: context: . dockerfile: Dockerfile target: api container_name: gotik-app restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy rabbitmq: condition: service_healthy ports: - "8080:8080" volumes: - ./configs/config.docker.yaml:/app/configs/config.yaml:ro - uploads_data:/app/.run/uploads worker: build: context: . dockerfile: Dockerfile target: worker container_name: gotik-worker restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy rabbitmq: condition: service_healthy volumes: - ./configs/config.docker.yaml:/app/configs/config.yaml:ro - uploads_data:/app/.run/uploads volumes: mysql_data: redis_data: rabbitmq_data: uploads_data: