?
This document uses PHP Chinese website manual Release
如果你在這里沒有看到你的問題,請(qǐng)隨時(shí)放下#docker-compose
在 freenode IRC 上投遞并詢問社區(qū)。
是 - 請(qǐng)參閱控制啟動(dòng)順序。
編寫停止嘗試,通過發(fā)送SIGTERM
.然后它等待一個(gè)默認(rèn)超時(shí)時(shí)間為10秒超時(shí)后,SIGKILL
被送到容器里強(qiáng)行殺死它。如果您正在等待此超時(shí),這意味著當(dāng)容器收到SIGTERM
信號(hào)。
已經(jīng)有很多關(guān)于這個(gè)問題的文章處理信號(hào)裝在容器里。
若要解決此問題,請(qǐng)嘗試以下操作:
確保使用的 JSON 形式CMD
和ENTRYPOINT
在你的文件里。例如,使用["program", "arg1", "arg2"]
不"program arg1 arg2"
使用字符串窗體使 Docker 使用bash
不能正確處理信號(hào)。Composet 總是使用 JSON 表單,所以如果您覆蓋了撰寫文件中的命令或入口點(diǎn),請(qǐng)不要擔(dān)心。
如果可以,修改正在運(yùn)行的應(yīng)用程序,為其添加顯式信號(hào)處理程序SIGTERM
.
設(shè)置為stop_signal
應(yīng)用程序知道如何處理的信號(hào):web:build:,stop_signal:SIGINT.
如果您無法修改應(yīng)用程序,請(qǐng)將該應(yīng)用程序包裝在輕量級(jí)
init 系統(tǒng)(如 s6)或信號(hào)代理(如 dumb-init 或 tini )中。這些包裝都會(huì)由SIGTERM
妥善處理。
組合使用項(xiàng)目名稱為項(xiàng)目的所有容器和其他資源創(chuàng)建唯一標(biāo)識(shí)符。若要運(yùn)行項(xiàng)目的多個(gè)副本,請(qǐng)使用-p
命令行選項(xiàng)或者COMPOSE_PROJECT_NAME
環(huán)境變量...
up
,run
以及start
之間有什么區(qū)別?通常情況下,你想使用docker-compose up
。使用up
啟動(dòng)或重新啟動(dòng)在定義的所有服務(wù)docker-compose.yml
。在默認(rèn)的“附加”模式下,您將看到所有容器中的所有日志。在“分離”模式(-d
)中,Compose 在啟動(dòng)容器后退出,但容器繼續(xù)在后臺(tái)運(yùn)行。
docker-compose run
命令用于運(yùn)行“一次性”或“臨時(shí)”任務(wù)。它需要您想運(yùn)行的服務(wù)名稱,并且僅啟動(dòng)正在運(yùn)行的服務(wù)所依賴的服務(wù)的容器。使用run
運(yùn)行測(cè)試或執(zhí)行管理任務(wù),如刪除或添加數(shù)據(jù)的數(shù)據(jù)量的容器。run
命令的作用就像docker run -ti
打開容器的交互式終端,并返回與容器中進(jìn)程的退出狀態(tài)匹配的退出狀態(tài)。
docker-compose start
命令僅用于重新啟動(dòng)之前創(chuàng)建但已停止的容器。它從不創(chuàng)建新的容器。
是 YAML 是 json 的超集。所以任何 JSON 文件都應(yīng)該是有效的 YAML 。若要在撰寫時(shí)使用 JSON 文件,請(qǐng)指定要使用的文件名,例如:
docker-compose -f docker-compose.json up
COPY
/ADD
還是一卷書?您可以使用COPY
中的ADD
指令將代碼添加到圖像中Dockerfile
。如果您需要將代碼與 Docker 映像一起重定位,例如在將代碼發(fā)送到其他環(huán)境(生產(chǎn),CI 等)時(shí),這非常有用。
您應(yīng)該使用volume
如果您想要對(duì)代碼進(jìn)行更改,并且看到它們立即被反映出來,例如,當(dāng)您正在開發(fā)代碼,并且您的服務(wù)器支持熱代碼重新加載或活動(dòng)重新加載時(shí)。
在某些情況下,您可能會(huì)同時(shí)使用這兩種方法。您可以使用COPY
,并使用volume
在開發(fā)過程中,在撰寫文件中包含來自主機(jī)的代碼。卷覆蓋圖像的目錄內(nèi)容。
github 上有很多編寫文件的例子。
安裝組合
從Django開始
從Rails開始
從WordPress開始
命令行引用
合成文件引用