services: # mysql: # build: # context: . # dockerfile: Dockerfile-mysql # ports: # - "13306:3306" # 修改为 13306 或其他未使用的端口 # networks: # - app-network # volumes: # - mysql_data:/var/lib/mysql # 持久化数据 # healthcheck: # test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-padmin123"] # interval: 10s # timeout: 5s # retries: 5 # start_period: 30s # redis: # image: redis:7.2-alpine # ports: # - "6379:6379" # networks: # - app-network # volumes: # - redis_data:/data # healthcheck: # test: ["CMD", "redis-cli", "ping"] # interval: 5s # timeout: 3s # retries: 5 # start_period: 10s # command: redis-server --appendonly yes # node: # build: # context: . # dockerfile: Dockerfile-node # depends_on: # mysql: # condition: service_healthy # ports: # - "8084:8084" # networks: # - app-network # environment: # - API_URL=http://server:8091 # server: # build: # context: . # dockerfile: Dockerfile-server # # 添加构建缓存设置 # cache_from: # - eclipse-temurin:21-jre # depends_on: # mysql: # condition: service_healthy # redis: # condition: service_healthy # networks: # - app-network # environment: # SPRING_DATASOURCE_URL: "jdbc:mysql://mysql:3306/talkingq?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC" # SPRING_DATASOURCE_USERNAME: "root" # SPRING_DATASOURCE_PASSWORD: "admin123" # SPRING_DATA_REDIS_HOST: "redis" # SPRING_DATA_REDIS_PORT: "6379" # SPRING_DATA_REDIS_PASSWORD: "" # volumes: # - maven_repo:/root/.m2/repository # 持久化Maven仓库 # restart: on-failure # 添加重启策略,如果启动失败会自动重试 nginx: image: nginx:stable-alpine # depends_on: # server: # condition: service_started ports: - "80:80" - "443:443" networks: - app-network volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./logs/nginx:/var/log/nginx - ./certbot/conf:/etc/letsencrypt - ./certbot/www:/var/www/certbot - ./web:/usr/share/nginx/html - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: - TZ=Asia/Shanghai command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" certbot: image: certbot/certbot networks: - app-network volumes: - ./certbot/conf:/etc/letsencrypt - ./certbot/www:/var/www/certbot - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: - TZ=Asia/Shanghai entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'" networks: app-network: driver: bridge # volumes: # mysql_data: # 定义持久化卷 # maven_repo: # 持久化Maven仓库 # vosk_models: # 持久化Vosk模型 # redis_data: #redis持久卷