You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法使用Spring数据源参数运行Docker容器问题求助

解决方案

有两种无需将参数写入application.properties的实现方式,可根据需求选择:

方案1:修改Dockerfile支持直接传入原命令行参数

该方案可以直接复用你已有的终端启动参数,无需调整参数格式。

调整后Dockerfile内容:

FROM openjdk:11.0.7-jre-slim

ENV DEMO_ROOT=/root

ADD /target/LatestBuild/ecom-0.0.1-SNAPSHOT.jar $DEMO_ROOT
WORKDIR ${DEMO_ROOT}

# 预留配置位接收JVM参数与Spring启动参数
ENV JAVA_OPTS=""
ENV SPRING_ARGS=""

CMD ["sh", "-c", "java $JAVA_OPTS -jar ecom-0.0.1-SNAPSHOT.jar $SPRING_ARGS"]

对应docker run启动命令:

docker run -p 8999:8999 \
--env JAVA_OPTS="-Dserver.port=8999 -Dlogging.org.hibernate.SQL=DEBUG -Dlogging.level.ROOT=DEBUG -Dlogging.level.io.github.jhipster=DEBUG -Dlogging.level.com.opti.ecom=DEBUG -Dlogging.path=/var/log/spring/ecom_v2/" \
--env SPRING_ARGS="--spring.jpa.show_sql=true --spring.profiles.active=dev,no-liquibase --spring.datasource.url=jdbc:postgresql://aws_database_url --spring.datasource.username=user --spring.datasource.password=password --spring.datasource.hikari.maximum-pool-size=10" \
<你的镜像名称>

方案2:无需修改Dockerfile,使用Spring Boot原生环境变量绑定规则

Spring Boot默认支持将大写、下划线分隔的环境变量自动映射为配置项,转换规则为:配置项中的.替换为_,-直接删除,所有字母转为大写。
你之前直接传env不生效是因为没有按照Spring Boot的环境变量命名规则传入参数,按如下格式传入即可生效:

docker run -p 8999:8999 \
--env SERVER_PORT=8999 \
--env LOGGING_ORG_HIBERNATE_SQL=DEBUG \
--env LOGGING_LEVEL_ROOT=DEBUG \
--env LOGGING_LEVEL_IO_GITHUB_JHIPSTER=DEBUG \
--env LOGGING_LEVEL_COM_OPTI_ECOM=DEBUG \
--env LOGGING_PATH=/var/log/spring/ecom_v2/ \
--env SPRING_JPA_SHOW_SQL=true \
--env SPRING_PROFILES_ACTIVE=dev,no-liquibase \
--env SPRING_DATASOURCE_URL=jdbc:postgresql://aws_database_url \
--env SPRING_DATASOURCE_USERNAME=user \
--env SPRING_DATASOURCE_PASSWORD=password \
--env SPRING_DATASOURCE_HIKARI_MAXIMUMPOOLSIZE=10 \
<你的镜像名称>

内容的提问来源于stack exchange,提问作者test test

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:06