Dockerfile.flow 1.8 KB

123456789101112131415161718192021222324252627282930313233343536
  1. # ============================================
  2. # Forge Flow 流程服务 Dockerfile
  3. # ============================================
  4. # 构建上下文为项目根目录,docker compose 中 context 设为 ..
  5. FROM eclipse-temurin:17-jdk AS builder
  6. WORKDIR /build
  7. COPY forge/ .
  8. RUN mvn clean package -pl forge-flow -am -DskipTests -Pprod
  9. FROM eclipse-temurin:17-jre
  10. WORKDIR /app
  11. COPY --from=builder /build/forge-flow/target/forge-flow.jar app.jar
  12. ENV JAVA_OPTS="-Xms256m -Xmx512m"
  13. ENV SPRING_PROFILES_ACTIVE=prod
  14. ENV MYSQL_HOST=mysql
  15. ENV MYSQL_PORT=3306
  16. ENV MYSQL_DB=forge_admin
  17. ENV MYSQL_USER=root
  18. ENV MYSQL_PASSWORD=forge123456
  19. ENV REDIS_HOST=redis
  20. ENV REDIS_PORT=6379
  21. ENV REDIS_PASSWORD=forge123456
  22. EXPOSE 8081
  23. ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} \
  24. -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE} \
  25. -Dspring.datasource.dynamic.datasource.master.url=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true \
  26. -Dspring.datasource.dynamic.datasource.master.username=${MYSQL_USER} \
  27. -Dspring.datasource.dynamic.datasource.master.password=${MYSQL_PASSWORD} \
  28. -Dspring.data.redis.host=${REDIS_HOST} \
  29. -Dspring.data.redis.port=${REDIS_PORT} \
  30. -Dspring.data.redis.password=${REDIS_PASSWORD} \
  31. -Dspring.data.redis.redisson.config=\"singleServerConfig:\\n address: \\\"redis://${REDIS_HOST}:${REDIS_PORT}\\\"\\n database: 0\\n password: ${REDIS_PASSWORD}\\n connectTimeout: 10000\\n timeout: 3000\\n retryAttempts: 3\\n retryInterval: 1500\\n connectionPoolSize: 64\\n connectionMinimumIdleSize: 10\\nthreads: 16\\nnettyThreads: 32\" \
  32. -jar app.jar"]