services: mysql: image: mysql:5.7 container_name: gost-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_DATABASE: ${DB_NAME} MYSQL_USER: ${DB_USER} MYSQL_PASSWORD: ${DB_PASSWORD} TZ: Asia/Shanghai volumes: - mysql_data:/var/lib/mysql - ./gost.sql:/docker-entrypoint-initdb.d/init.sql:ro command: > --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max_connections=1000 --innodb_buffer_pool_size=256M networks: - gost-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 10s retries: 10 backend: image: bqlpfy/springboot-backend:latest container_name: springboot-backend restart: unless-stopped environment: DB_HOST: mysql DB_NAME: ${DB_NAME} DB_USER: ${DB_USER} DB_PASSWORD: ${DB_PASSWORD} JWT_SECRET: ${JWT_SECRET} LOG_DIR: /app/logs SERVER_ADDR: ${SERVER_HOST} JAVA_OPTS: "-Xms128m -Xmx512m -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai" ports: - "${BACKEND_PORT}:6365" volumes: - backend_logs:/app/logs depends_on: mysql: condition: service_healthy networks: - gost-network healthcheck: test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:6365/flow/test || exit 1"] interval: 30s timeout: 10s retries: 5 start_period: 90s frontend: image: bqlpfy/vue-frontend:latest container_name: vue-frontend restart: unless-stopped ports: - "${FRONTEND_PORT}:80" depends_on: backend: condition: service_healthy networks: - gost-network volumes: mysql_data: driver: local backend_logs: driver: local networks: gost-network: driver: bridge ipam: config: - subnet: 172.20.0.0/16