Docker撰写JVM参数

我编写了一个java应用程序,它接受一个环境variables,它需要一个参数来为JWT令牌salt键设置一个键。 有没有办法让我在Docker Compose中传递命令variables?

java -Djava.security.egd=file:/dev/./urandom -jar /user-profile-api.jar --key=blah 

然后运行Docker镜像

 docker run -p 8080:8080 docker_image --key=blah 

如果您已经能够运行您的docker集装箱使用:

docker run -p 8080:8080 docker_image --key=blah

然后,您只需要将组合文件中的servicecommand属性覆盖为–key = blah。 所以:

 services: app: command: --key=blah ... 

一种方法是把你的java命令放在一个shell脚本(比如bootstrap.sh )中,并将其设置为在docker compose中运行的命令。 然后在bootstrap.sh通过docker-compose.yml的环境variables注入密钥。

例如

bootstrap.sh

 java -Djava.security.egd=file:/dev/./urandom -jar /user-profile-api.jar --key=$SALT_KEY 

泊坞窗,compose.yml

 build: . environment: - SALT_KEY=blah command: /opt/app/bootstrap.sh 

显然你需要将bootstrap.sh打包到你的容器中才能使用。