name: data-sync-s3 services: mysql: image: docker.m.daocloud.io/library/mysql:8.4.9 restart: unless-stopped environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE:-ry-vue} command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci - --explicit_defaults_for_timestamp=true - --lower_case_table_names=1 volumes: - mysql-data:/var/lib/mysql - ../script/sql/ry_vue.sql:/docker-entrypoint-initdb.d/01-ry-vue.sql:ro - ../script/sql/ry_job.sql:/docker-entrypoint-initdb.d/02-ry-job.sql:ro - ../script/sql/ry_workflow.sql:/docker-entrypoint-initdb.d/03-ry-workflow.sql:ro - ../script/sql/ry_ai.sql:/docker-entrypoint-initdb.d/04-ry-ai.sql:ro - ../script/sql/ry_sync.sql:/docker-entrypoint-initdb.d/05-ry-sync.sql:ro healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"] interval: 10s timeout: 5s retries: 15 start_period: 30s networks: [app] redis: image: docker.m.daocloud.io/library/redis:8.2.1-alpine restart: unless-stopped command: ["sh", "-c", "exec redis-server --appendonly yes --requirepass \"$$REDIS_PASSWORD\""] environment: TZ: Asia/Shanghai REDIS_PASSWORD: ${REDIS_PASSWORD} volumes: - redis-data:/data healthcheck: test: ["CMD-SHELL", "redis-cli -a \"$$REDIS_PASSWORD\" ping | grep PONG"] interval: 10s timeout: 5s retries: 10 networks: [app] backend: build: context: .. dockerfile: deploy/Dockerfile.backend image: data-sync-s3/backend:latest restart: unless-stopped environment: TZ: Asia/Shanghai SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE:-ry-vue}?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: root SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: ${MYSQL_ROOT_PASSWORD} SPRING_DATA_REDIS_HOST: redis SPRING_DATA_REDIS_PORT: 6379 SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD} MYBATIS_ENCRYPTOR_ENABLE: "true" MYBATIS_ENCRYPTOR_PASSWORD: ${MYBATIS_ENCRYPTOR_PASSWORD} DWS_EXECUTABLE: /usr/local/bin/dws DWS_PROFILE_ROOT: /var/lib/ruoyi-sync/dws DWS_KEYCHAIN_ROOT: /var/lib/ruoyi-sync/dws-keychain SYNC_SCHEDULER_ENABLED: "true" JAVA_OPTS: -Xms256m -Xmx1024m -XX:+UseZGC -XX:+HeapDumpOnOutOfMemoryError volumes: - backend-logs:/app/logs - dws-profiles:/var/lib/ruoyi-sync/dws - dws-keychains:/var/lib/ruoyi-sync/dws-keychain depends_on: mysql: condition: service_healthy redis: condition: service_healthy networks: [app] web: build: context: .. dockerfile: deploy/Dockerfile.web image: data-sync-s3/web:latest restart: unless-stopped ports: # The host already runs another Nginx on port 80. Expose this stack on # 8080 and let the existing reverse proxy forward traffic here. - "38080:80" depends_on: backend: condition: service_healthy networks: [app] networks: app: driver: bridge volumes: mysql-data: redis-data: backend-logs: dws-profiles: dws-keychains: