我結束我的Debian Dockerfile這些行:保活Docker容器與supervisord
EXPOSE 80 22
COPY etc/supervisor/conf.d /etc/supervisor/conf.d
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
在/etc/supervisor/conf.d/start.conf
文件:
[program:ssh]
command=/usr/sbin/service ssh restart
[program:nginx]
command=/usr/sbin/nginx -g 'daemon off;'
[program:systemctl]
command=/bin/systemctl daemon-reload
[program:systemctl]
command=/bin/systemctl start php7-fpm.service
如果我嘗試運行使用下面的命令該碼頭工人形象:
$ docker run -d -p 8080:80 -p 8081:22 lanti/debian
它立即停止運行。如果我試圖在前臺運行它:
$ docker run -it -v /home/core/share:/root/share -p 8080:80 -p 8081:22 lanti/debian
這是一樣的,立即退出。如果我使用bash CMD運行:
$ docker run --rm -it -v /home/core/share:/root/share -p 8080:80 -p 8081:22 lanti/debian bash
它保持活躍在控制檯,而是由上級的預定義的命令無法運行,所以我需要運行$ service supervisor restart
容器內,否則的Nginx和SSH將不會啓動。
我如何開始與多個命令泊塢窗容器在啓動時運行?在過去,我在主機操作系統下的systemd文件中使用了ExecStartPost
行,但是由於這種原因,systemd文件變得複雜,所以我嘗試將預啓動命令移動到容器中,以便在任何類型的啓動時自動運行。
這搬運工容器將有nginx的,PHP,SSH,在未來的phpmyadmin和mysql。我不想要多個容器。
謝謝你的幫助!
使用多克爾典型的方法是每容器1點的過程。你可以用docker-compose @lanti輕鬆做到這一點 – Fuxi
我明白了。所以我可以連接讓我們說一個PHP + Nginx容器與MySQL容器?將nginx + php保存在同一個容器中是一個好主意嗎?我從主管那裏刪除了systemd。我跟着一個不是碼頭工的教程。現在主管也啓動php-fpm。 – Lanti