[英]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.