docker镜像变量传递

docker镜像变量传递问题

直接使用变量似乎读取不到

sh 复制代码
[root@vm t]# cat Dockerfile
FROM centos:7.9.2009
ENV JAVA_OPTS " -Xloggc:=/opt/${HOSTNAME}.log"
CMD ["/usr/sbin/sshd", "-D"]
docker build -t centos:env-tag .
docker run -itd --name test centos:env-tag bash
docker exec -it test bash

[root@51f0817b6080 /]# env| grep JAVA  #读不到变量
JAVA_OPTS= -Xloggc:=/opt/.log

RUN写入

sh 复制代码
[root@vm t]# cat Dockerfile
FROM centos:7.9.2009
RUN hostname=${HOSTNAME}
ENV JAVA_OPTS " -Xloggc:=/opt/${HOSTNAME}.log"
RUN echo "Hostname is ${HOSTNAME}" > /tmp/hostname.txt
CMD ["/usr/sbin/sshd", "-D"]

docker build -t centos:env-tag .
docker run -itd --name test centos:env-tag bash
docker exec -it test bash

[root@51f0817b6080 /]# env| grep JAVA  
JAVA_OPTS= -Xloggc:=/opt/.log  #读不到变量,每一步应该是隔离开的
[root@51f0817b6080 /]# cat /tmp/hostname.txt
Hostname is 1c31bfe5ea0f   #虽然执行成功,但并不是容器本身的HOSTNAME,应该是隔离开的
[root@51f0817b6080 /]# echo $HOSTNAME
51f0817b6080

docker rm -f test
docker rmi centos:env-tag
sh 复制代码
[root@vm p]# cat Dockerfile
FROM centos:7.9.2009
RUN hostname=${HOSTNAME}  && JAVA_OPTS=" -Xloggc:=/opt/${hostname}.log"
CMD ["/usr/sbin/sshd", "-D"]

docker build -t centos:env-tag .
docker run -itd --name test centos:env-tag bash
docker exec -it test bash

[root@ac5c509f45d0 /]# echo $JAVA_OPTS  # 依然不存在
[root@ac5c509f45d0 /]# echo $hostname  # 不存在	

--build-arg传入变量

sh 复制代码
[root@vm p]# cat Dockerfile
FROM centos:7.9.2009
ARG tag
ENV JAVA_OPTS " -Xloggc:=/opt/${tag}.log "
CMD ["/usr/sbin/sshd", "-D"]

[root@vm T]# docker build --build-arg tag=`date +"%m%d%H%M"` -t centos:env-tag .
[root@vm t]# docker run -itd --name test centos:env-tag bash
[root@vm t]# docker exec -it test env|grep JAVA  #传入成功
JAVA_OPTS= -Xloggc:=/opt/01171046.log 

启动脚本定义

sh 复制代码
#用tomcat先试下
[root@vm jk]# docker run -itd -v /root/p/jk/catalina.sh:/usr/local/tomcat/bin/catalina.sh tomcat:jdk8
# OS specific support.  $var _must_ be set to either true or false.
JAVA_OPTS="-Xms1g -Xmx1g -Xloggc:=/opt/$HOSTNAME.log"


root@5354c3aeb850:/usr/local/tomcat# ps -ef | grep java
root         1     0  5 08:07 pts/0    00:00:01 /opt/java/openjdk/bin/java ... -Xms1g -Xmx1g -Xloggc:=/opt/5354c3aeb850.log

部署使用

sh 复制代码
[root@vm p]# cat Dockerfile
FROM centos:7.9.2009
ADD target/*.jar app.jar
ADD start.sh start.sh
ENTRYPOINT ["sh","start.sh"]

[root@vm p]# cat start.sh
JAVA_OPTS="-XX:+UseContainerSupport -XX:InitialRAMPercentage=65.0 -XX:MaxRAMPercentage=65.0 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:MaxRAMPercentage=65.0 -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=384M -XX:MaxDirectMemorySize=64M -Xloggc:=/opt/$HOSTNAME.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/$HOSTNAME.hprof"
java $JAVA_OPTS -jar /app.jar


[root@market-58c5974c94-6xkkt /]# ps -ef | grep java
root           8       1 65 16:31 ?        00:00:37 java -XX:+UseContainerSupport -XX:InitialRAMPercentage=65.0 -XX:MaxRAMPercentage=65.0 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:MaxRAMPercentage=65.0 -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=384M -XX:MaxDirectMemorySize=64M -Xloggc:=/opt/market-58c5974c94-6xkkt.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/market-58c5974c94-6xkkt.hprof -jar /app.jar
相关推荐
402 Payment Required1 分钟前
serv00 ssh登录保活脚本-邮件通知版
运维·chrome·ssh
小柏ぁ6 分钟前
calico/node is not ready: BIRD is not ready: BGP not established with xxx
运维·docker·kubernetes
Mintimate27 分钟前
云服务器 Linux 手动 DD 安装第三方 Linux 发行版:原理与实战
linux·运维·服务器
RussellFans38 分钟前
Linux 环境配置
linux·运维·服务器
三劫散仙1 小时前
kubernetes jenkins pipeline优化拉取大仓库性能指定分支+深度
容器·kubernetes·jenkins
西京刀客1 小时前
k8s热更新-subPath 不支持热更新
云原生·容器·kubernetes·configmap·subpath
高冷的肌肉码喽1 小时前
Linux-进程间的通信
linux·运维·服务器
乖乖是干饭王1 小时前
Linux系统编程中的_GNU_SOURCE宏
linux·运维·c语言·学习·gnu
jekc8682 小时前
禅道18.2集成LDAP
linux·运维·服务器
weixin_434936282 小时前
k8S 命令
linux·容器·kubernetes