老师,请问一下dockerfile的CMD命令没有生效问题

来源:3-11 Dockerfile实战(2)

慕工程8205120

2020-12-23

FROM centos:7
MAINTAINER chen@qq.com
COPY start.sh /root/
COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel wget
RUN wget 'http://nginx.org/download/nginx-1.12.2.tar.gz'
RUN tar -zxvf nginx-1.12.2.tar.gz
RUN cd nginx-1.12.2 && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-stream_ssl_module && make && make install
COPY jdk1.8.0_131.tar.gz /usr/local/
COPY apache-tomcat-8.5.55.tar.gz /usr/local/
RUN tar -zxvf /usr/local/jdk1.8.0_131.tar.gz -C /usr/local/
RUN tar -zxvf /usr/local/apache-tomcat-8.5.55.tar.gz -C /usr/local/
RUN echo 'export JAVA_HOME=/usr/local/jdk1.8.0_131/' >>/etc/profile
RUN echo 'export PATH=$PATH:$JAVA_HOME/bin' >>/etc/profile
RUN echo 'export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH' >>/etc/profile && source /etc/profile
RUN chmod +x /root/start.sh
CMD ["sh","-c","/root/start.sh"]

我想构建一个容器里面运行nginx和tomcat,用的start.sh启动他们,但是dockerfile中的source /etc/profile和CMD [“sh”,"-c","/root/start.sh"]都没有生效。当我进入镜像后执行start.sh和source /etc/profile。都是可以正常启动运行。我换了好几种办法都不可以。请问老师一下,这是怎么回事?谢谢!

写回答

1回答

麦兜搞IT

2020-12-25

您可以参考下我这个https://github.com/xiaopeng163/docker-compose-flask/blob/master/web/Dockerfile  你这样执行shell脚本,执行完就退出了

0
1
慕工程8205120
非常感谢!
2020-12-30
共1条回复

系统学习Docker 践行DevOps理念

无论你是开发、测试还是运维,Docker都是你的必备技能。

3297 学习 · 1895 问题

查看课程