docker环境下java参数传递与获取
文章目录
- docker环境下java参数传递与获取
- 一,java命令行赋值
- 二,docker run赋值
- 三,docker-compose赋值
docker环境下java参数传递与获取
// docker-compose.yml -> environment -> USER
String userEnv = System.getenv("USER");// java -jar xxx.jar --user=jackson
String userArg = Stream.of(args).filter(arg -> arg.contains("--user")).map(arg -> StringUtils.substringAfter(arg, "=")).collect(Collectors.joining());// java -jar -Duser=jackson xxx.jar
String userProp = System.getProperty("user", "");// 按优先级获取
String userName = StringUtils.defaultIfBlank(userEnv, StringUtils.defaultIfBlank(userArg, userProp));
一,java命令行赋值
#args
java -jar docker-java-params-0.0.1.jar --user=jackson#系统属性
java -jar -Duser=jackson docker-java-params-0.0.1.jar
二,docker run赋值
#环境变量、args
docker run -e USER='user001' registry.cn-shanghai.aliyuncs.com/00fly/docker-java-params:0.0.1 --user='jackson'
三,docker-compose赋值
优先环境变量方式,同时也支持args、系统属性
新建docker-compose.yml
services:docker-java-params:image: registry.cn-shanghai.aliyuncs.com/00fly/docker-java-params:0.0.1container_name: docker-java-paramscommand: --user="user by args"entrypoint: java -server -Djava.security.egd=file:/dev/./urandom -Xshareclasses -Xquickstart -Duser="user by prop" -jar /app.jardeploy:resources:limits:cpus: '1.0'memory: 32Mreservations:cpus: '0.05'memory: 32Mrestart: on-failureenvironment:- USER=user by envlogging:driver: json-fileoptions:max-size: 5mmax-file: '1'
同级目录下执行命令
docker-compose up -d && docker logs -f docker-java-params
[+] Running 1/1✔ Container docker-java-params Started
[main] INFO com.fly.simple.MainRun - userEnv: user by env
[main] INFO com.fly.simple.MainRun - userArg: user by args
[main] INFO com.fly.simple.MainRun - userProp: user by prop
[main] INFO com.fly.simple.MainRun - userName: user by env
并且支持占位符
services:docker-java-params:image: registry.cn-shanghai.aliyuncs.com/00fly/docker-java-params:0.0.1container_name: docker-java-paramscommand: '--user="${USER2}"'entrypoint: 'java -server -Djava.security.egd=file:/dev/./urandom -Xshareclasses -Xquickstart -Duser=${USER3} -jar /app.jar'deploy:resources:limits:cpus: '1.0'memory: 32Mreservations:cpus: '0.05'memory: 32Mrestart: on-failureenvironment:- USER=${USER1}logging:driver: json-fileoptions:max-size: 5mmax-file: '1'
占位符传递参数
docker-compose down && USER1='user001' USER2='user002' USER3='user003' docker-compose up -d && docker logs -f docker-java-params
感兴趣的话,你也来试试吧!
有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!
-over-