简体   繁体   English

如何在 Tomcat docker 中设置不同的环境变量?

[英]how to set differente environment variables in Tomcat docker?

I've a spring boot app that I'm deploying in a Tomcat Docker.我有一个部署在 Tomcat Docker 中的 Spring Boot 应用程序。

I've many properties in application-deploy.properties like this:我在application-deploy.properties中有很多属性,如下所示:

#DB
spring.datasource.url=jdbc:mysql://${SPRING_DATASOURCE_URL}
spring.datasource.username=${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD}

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

I want to get the variables from Docker.我想从 Docker 获取变量。 So, I'm trying this Dockerfile :所以,我正在尝试这个Dockerfile

FROM tomcat:9.0.56
ARG SPRING_DATASOURCE_URL
ARG SPRING_DATASOURCE_USERNAME
ARG SPRING_DATASOURCE_PASSWORD
COPY setenv.sh /usr/local/tomcat/bin/setenv.sh
COPY /app/target/api.war /usr/local/tomcat/webapps/ROOT.war
EXPOSE 8080
CMD ["catalina.sh", "run"]

and I've setenv.sh like this:我已经setenv.sh像这样:

JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=deploy"
JAVA_OPTS="$JAVA_OPTS -DSPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL}"
JAVA_OPTS="$JAVA_OPTS -DSPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}"
JAVA_OPTS="$JAVA_OPTS -DSPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}"

Any idea of what I'm wrong and how can solve it?知道我错了什么以及如何解决它? I want to pass the variables to application-deploy.properties when I build Docker.我想在构建 Docker 时将变量传递给 application-deploy.properties。

Use the ENV Statement .使用ENV语句

ENV SPRING_DATASOURCE_URL="MY_ACTUAL_URL"
ENV SPRING_DATASOURCE_USERNAME="user"
ENV SPRING_DATASOURCE_PASSWORD="pw"

您可以通过以下方式传入环境变量

docker run -e SPRING_DATASOURCE_URL="" -e SPRING_DATASOURCE_USERNAME="" --name {container-name} {image-name} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM