Dockerfile中配置环境变量
Dockerfile中可以通过ENV指令设置环境变量,不过当有多行的环境变量要设置时(比如,JDK环境变量配置),使用ENV再去设置就感觉比较繁琐,想像在Linux下一样通过设置对应的profile文件(或bashrc文件)来配置环境环境变量,这时候就可以通过echo指令进行配置。
1. RUN指令配置环境变量
以下是一个比较简单的示例,使用Dockerfile语法里的ENV和RUN指令配置环境变量。
1FROM ubuntu:latest
2COPY jdk1.8.0_151 /opt/jdk/
3
4ENV JAVA_HOME=/opt/jdk
5RUN export JAVA_HOME
6……
按该Dockerfile编译后的镜像,去执行的时候,可以发现只有JAVA_HOME可以正常输出,JRE_HOME就无法输出,想要也输出JRE_HOME需要按这个样例再来一个配置,显然这样比较繁琐。
1[root@ecs-82f5]~# docker exec -it 6662e122003c /bin/bash
2root@6662e122003c:/# echo $JAVA_HOME
3/opt/jdk
4root@6662e122003c:/# echo $JAVA_JRE
5
6root@6662e122003c:/#
2. echo配置环境变量
在dockerfile echo添加环境变量,或者要在一个文件中输入多行文本,使用\n即可:
1[root@ecs-82f5]/envtest# cat Dockerfile
2FROM ubuntu:latest
3ADD jdk1.8.0_151 /opt/jdk1.8.0_151/
4
5# 用echo添加多行内容
6RUN echo 'export JAVA_HOME=/opt/jdk1.8.0_151 \n\
7export JRE_HOME=/opt/jdk1.8.0_151/jre \n\
8export CLASSPATH=.:$JAVA_HOME/lib:/dt.jar:$JAVA_HOME/lib/tools.jar \n\
9PATH=$PATH:$JAVA_HOME/bin \n\
10ulimit -u 4096'\
11>> ~/.bashrc
12
13CMD ["/bin/bash"]
编译镜像并执行后的结果:
1[root@ecs-82f5]/envtest# docker build -t envtest:v1.0 .
2[root@ecs-82f5]/envtest# docker run -it -d 2dd69bdc973e
3781c5f98bca87c6badb5a38f8ea09a89cc7f712b321eacb67261d30fd41e05ff
4[root@ecs-82f5]/envtest# docker exec -it 781c5f98bca8 /bin/bash
5root@781c5f98bca8:/# echo $JAVA_HOME
6/opt/jdk1.8.0_151
7root@781c5f98bca8:/# echo $JRE_HOME
8/opt/jdk1.8.0_151/jre
9root@781c5f98bca8:/# echo $CLASSPATH
10.:/opt/jdk1.8.0_151/lib:/dt.jar:/opt/jdk1.8.0_151/lib/tools.jar
11root@781c5f98bca8:/#
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/dockerfile-env/6774.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.