Steven5538

在 Docker Container 下運行多 Process

Word count: 220Reading time: 1 min
2016/04/21 Share

根據 Docker 官方的說法,其不推薦在開啟一個 Container 時,運行超過一個 Process,而是透過開啟多個 Container 來實現。

然而現實常常會有這種奇怪的需求需要滿足,在這裡我們就可以用 supervisor 來實現。

我的環境是在 Ubuntu 底下,其他系統作法可能會略有不同。

首先當然是安裝 supervisor,在 Dockerfile 加入這行:

1
RUN apt-get update && apt-get install -y supervisor

接著,創建 supervisord.conf,並撰寫要執行的指令,以我的例子來說,就是執行 MySQL 以及 Apache。

1
2
3
4
5
6
7
8
[supervisord]
nodaemon=true

[program:mysql]
command=mysqld_safe

[program:apache2]
command=service apache2 start

最後,在 Dockerfile 底下把設定檔加進去,並且設定 ENTRYPOINT 讓 Container 開啟時執行。

1
2
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf 
ENTRYPOINT ["/usr/bin/supervisord"]

這樣每次開啟 Container 時,就可以一次跑起多個服務。

CATALOG