From 03bcf974b102f36cfb719d0f73c09efb2ca924b4 Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Mon, 29 Jun 2026 13:08:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20ENTRYPOINT=20=E5=85=BC=E5=AE=B9=20DB=5F*?= =?UTF-8?q?=20=E5=92=8C=20MYSQL=5F*=20=E4=B8=A4=E7=A7=8D=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E5=91=BD=E5=90=8D=EF=BC=8C=E4=BF=AE=E5=A4=8D=20MySQL=20?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 32 +++++++++++++++++++++----------- par-api/Dockerfile | 32 +++++++++++++++++++++----------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index c19a3f8..adae39c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,16 +44,26 @@ EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ CMD wget -qO- http://localhost:8080/health || exit 1 -# 启动入口(参考 mediabot:支持环境变量动态构造数据源 URL,便于不同环境切换) +# 启动入口(兼容 DB_* 和 MYSQL_* 两种变量命名风格) +# Spring Boot 会优先读取 SPRING_DATASOURCE_* 环境变量,覆盖 application.yml 配置 ENTRYPOINT ["sh", "-c", "\ - if [ -z \"$SPRING_DATASOURCE_URL\" ]; then \ - export SPRING_DATASOURCE_URL=\"jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8\"; \ - fi; \ - if [ -n \"$MYSQL_USER\" ]; then \ - export SPRING_DATASOURCE_USERNAME=\"$MYSQL_USER\"; \ - fi; \ - if [ -n \"$MYSQL_PASSWORD\" ]; then \ - export SPRING_DATASOURCE_PASSWORD=\"$MYSQL_PASSWORD\"; \ - fi; \ - java $JAVA_OPTS -jar app.jar \ + # 如果未设置完整的 SPRING_DATASOURCE_URL,则从环境变量构造\n\ + if [ -z \"$SPRING_DATASOURCE_URL\" ]; then \n\ + HOST=\"${MYSQL_HOST:-${DB_HOST:-localhost}}\"; \n\ + PORT=\"${MYSQL_PORT:-${DB_PORT:-3306}}\"; \n\ + DB=\"${MYSQL_DB:-${DB_NAME:-par_registry}}\"; \n\ + export SPRING_DATASOURCE_URL=\"jdbc:mysql://${HOST}:${PORT}/${DB}?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8\"; \n\ + fi; \n\ + # 用户名密码:MYSQL_* 优先,DB_* 作为备选\n\ + if [ -z \"$SPRING_DATASOURCE_USERNAME\" ]; then \n\ + export SPRING_DATASOURCE_USERNAME=\"${MYSQL_USER:-${DB_USERNAME:-root}}\"; \n\ + fi; \n\ + if [ -z \"$SPRING_DATASOURCE_PASSWORD\" ]; then \n\ + export SPRING_DATASOURCE_PASSWORD=\"${MYSQL_PASSWORD:-${DB_PASSWORD:-}}\"; \n\ + fi; \n\ + # 兼容 JWT_SECRET 和 HMAC_SECRET 两种命名\n\ + if [ -z \"$HMAC_SECRET\" ] && [ -n \"$JWT_SECRET\" ]; then \n\ + export HMAC_SECRET=\"$JWT_SECRET\"; \n\ + fi; \n\ + java $JAVA_OPTS -jar app.jar \n\ "] diff --git a/par-api/Dockerfile b/par-api/Dockerfile index d7effae..b260c7e 100644 --- a/par-api/Dockerfile +++ b/par-api/Dockerfile @@ -84,16 +84,26 @@ EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ CMD wget -qO- http://localhost:8080/health || exit 1 -# 启动入口(参考 mediabot:支持环境变量动态构造数据源 URL,便于不同环境切换) +# 启动入口(兼容 DB_* 和 MYSQL_* 两种变量命名风格) +# Spring Boot 会优先读取 SPRING_DATASOURCE_* 环境变量,覆盖 application.yml 配置 ENTRYPOINT ["sh", "-c", "\ - if [ -z \"$SPRING_DATASOURCE_URL\" ]; then \ - export SPRING_DATASOURCE_URL=\"jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8\"; \ - fi; \ - if [ -n \"$MYSQL_USER\" ]; then \ - export SPRING_DATASOURCE_USERNAME=\"$MYSQL_USER\"; \ - fi; \ - if [ -n \"$MYSQL_PASSWORD\" ]; then \ - export SPRING_DATASOURCE_PASSWORD=\"$MYSQL_PASSWORD\"; \ - fi; \ - java $JAVA_OPTS -jar app.jar \ + # 如果未设置完整的 SPRING_DATASOURCE_URL,则从环境变量构造\n\ + if [ -z \"$SPRING_DATASOURCE_URL\" ]; then \n\ + HOST=\"${MYSQL_HOST:-${DB_HOST:-localhost}}\"; \n\ + PORT=\"${MYSQL_PORT:-${DB_PORT:-3306}}\"; \n\ + DB=\"${MYSQL_DB:-${DB_NAME:-par_registry}}\"; \n\ + export SPRING_DATASOURCE_URL=\"jdbc:mysql://${HOST}:${PORT}/${DB}?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8\"; \n\ + fi; \n\ + # 用户名密码:MYSQL_* 优先,DB_* 作为备选\n\ + if [ -z \"$SPRING_DATASOURCE_USERNAME\" ]; then \n\ + export SPRING_DATASOURCE_USERNAME=\"${MYSQL_USER:-${DB_USERNAME:-root}}\"; \n\ + fi; \n\ + if [ -z \"$SPRING_DATASOURCE_PASSWORD\" ]; then \n\ + export SPRING_DATASOURCE_PASSWORD=\"${MYSQL_PASSWORD:-${DB_PASSWORD:-}}\"; \n\ + fi; \n\ + # 兼容 JWT_SECRET 和 HMAC_SECRET 两种命名\n\ + if [ -z \"$HMAC_SECRET\" ] && [ -n \"$JWT_SECRET\" ]; then \n\ + export HMAC_SECRET=\"$JWT_SECRET\"; \n\ + fi; \n\ + java $JAVA_OPTS -jar app.jar \n\ "]