Dockers从入门到实践---使用 Supervisor 来管理进程 mark
使用 Supervisor 来管理进程http://yeasy.gitbooks.io/docker_practice/content/cases/supervisor.html
来搭建doacker,遇到点问题,特mark一下。
supervisor配置文件内容 supervisord.conf
[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
配置文件包含目录和进程,第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行。第二段包含要控制的 2 个服务。每一段包含一个服务的目录和启动这个服务的命令。
这段我在ubunt14.04下无法成功,改成这段
[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apachectl -k start"
可以运行成功,然后运行容器采用后台运行的方法
docker run -d -p 80:80 test/supervisords
-d 后台运行
-p 80:80 主机的80端口映射到容器的80端口
test/supervisords 镜像名
ps:docker里面的Ubuntu好像后台运行sshd服务器很麻烦,书上这种方法不行,因为你根本不知道ssh的用户名密码,ubuntu好像也不提供改用户密码的批命令。所以dockerfile里面的ssh相关内容均可去掉。
vim supervisord.conf
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apachectl -k start"
vim Dockerfile
FROM docker.cn/docker/ubuntu
MAINTAINER [email protected]
RUN echo "deb http://mirrors.aliyun.com/ubuntu trusty main universe">/etc/apt/sources.list
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y apache2 supervisor
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
EXPOSE 80
CMD ["/usr/bin/supervisord"]
~