第一种方法,直接在dockerfile中实现

第一种方法,直接在dockerfile中实现

自启动服务使用tail -f,来防止进程退出

但tail的日志进程不能是已停止,所以尽量使用存在的进程

也使用while循环,来占用进程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
FROM centos:7
#环境目录
ENV MYPATH /usr/local
#工作目录
WORKDIR $MYPATH
#执行命令
RUN yum -y install epel-release
RUN yum -y install wget which net-tools
RUN yum -y install nginx
#CMD /usr/sbin/nginx  && tail -f /var/log/nginx/error.log
CMD /usr/sbin/nginx  && while true;do echo;sleep 9999999;done

第二种方法,在容器内写入启动脚本

先在容器中写入启动脚本,如下:start.sh

1
2
3
4
5
#!/bin/bash
#你要启动就程序
/usr/sbin/nginx
#占用进程,放置退出
/bin/bash

然后再dockerfile中写如

1
CMD ["start.sh"]

可合并写入dockerfile为:

1
2
3
#echo -e 识别转义符\n
RUN echo -e '#!/bin/sh\n/usr/sbin/nginx\n/bin/bash'> /start.sh 
CMD ["/bin/sh","/start.sh"]