Dockerfile.admin 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # ============================================
  2. # Forge Admin 后端服务 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-admin -am -DskipTests -Pprod
  9. FROM eclipse-temurin:17-jre
  10. WORKDIR /app
  11. COPY --from=builder /build/forge-admin/target/forge-admin.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. ENV FLOW_CLIENT_URL=http://forge-flow:8081
  23. EXPOSE 8580
  24. ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} \
  25. -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE} \
  26. -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 \
  27. -Dspring.datasource.dynamic.datasource.master.username=${MYSQL_USER} \
  28. -Dspring.datasource.dynamic.datasource.master.password=${MYSQL_PASSWORD} \
  29. -Dspring.data.redis.host=${REDIS_HOST} \
  30. -Dspring.data.redis.port=${REDIS_PORT} \
  31. -Dspring.data.redis.password=${REDIS_PASSWORD} \
  32. -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\" \
  33. -Dforge.flow.client.url=${FLOW_CLIENT_URL} \
  34. -jar app.jar"]