我有一個部署在 Tomcat Docker 中的 Spring Boot 應用程式。
我有很多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
我想從 Docker 獲取變數。所以,我正在嘗試這個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"]
我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}"
知道我錯了什么以及如何解決它?我想在構建 Docker 時將變數傳遞給 application-deploy.properties。
uj5u.com熱心網友回復:
使用ENV宣告。
ENV SPRING_DATASOURCE_URL="MY_ACTUAL_URL"
ENV SPRING_DATASOURCE_USERNAME="user"
ENV SPRING_DATASOURCE_PASSWORD="pw"
uj5u.com熱心網友回復:
您可以通過以下方式傳入環境變數
docker run -e SPRING_DATASOURCE_URL="" -e SPRING_DATASOURCE_USERNAME="" --name {container-name} {image-name}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/493011.html
