nginx docker官方鏡像添加自定義命令自動退出方式
nginx docker官方鏡像添加自定義啟動命令自動退出
今天在啟動nginx官方鏡像的時候想在啟動后執(zhí)行一些CMD命令,但發(fā)現(xiàn)每次執(zhí)行完CMD命令后鏡像會自動退出,在網(wǎng)上查找后發(fā)現(xiàn):
? If you add a custom CMD in the Dockerfile, be sure to include -g daemon off; in the CMD in order for nginx to stay in the foreground, so that Docker can track the process properly (otherwise your container will stop immediately after starting)!
譯文:
? 如果你再Dockerfile中添加了一條自定義的CMD命令,為了使nginx保持在前臺運行請確定CMD命令中包含參數(shù) -g daemon off; ,這樣Docker才能正確的跟蹤進(jìn)程(否則你的容器回在啟動后立即停止)
再從docker的運行機制來說明:
docker判斷容器是否運行的依據(jù)是容器內(nèi)pid(進(jìn)程號)為1的進(jìn)程是否結(jié)束,一旦pid=1的進(jìn)程結(jié)束后容器也會隨之退出。
在未添加自定義的CMD命令時,nginx容器中pid=1的進(jìn)程是nginx,而添加了CMD命令后,這條自定義的CMD命令的pid變成了1,而nginx進(jìn)程轉(zhuǎn)為守護(hù)線程的方式來執(zhí)行,當(dāng)自定義的CMD命令執(zhí)行結(jié)束后,容器便會隨之退出!
解決方法
添加全局參數(shù) -g ‘daemon off’;
解釋:
設(shè)置nginx不以守護(hù)線程的方式運行,這樣nginx始終保持進(jìn)程號pid=1,這樣容器就會隨著nginx一直運行下去。
示例:
- dockerfile
FROM nginx:latest CMD echo "hello" && exec nginx -g 'daemon off;'
- 命令行
docker run -itd nginx:latest /bin/bash echo "hello" && exec nginx -g 'daemon of f;'
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx和Apache配置SSL證書的實現(xiàn)步驟
SSL證書是一種數(shù)字證書,用于加密在網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)并保護(hù)敏感信息的安全性,本文主要介紹了nginx和Apache配置SSL證書的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-12-12
Windows下用Nginx配置https服務(wù)器及反向代理的問題
這篇文章主要介紹了Windows下用Nginx配置https服務(wù)器及反向代理的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Nginx配置PATHINFO隱藏thinkphp index.php
這篇文章主要介紹了Nginx配置PATHINFO隱藏thinkphp index.php,本文直接給出配置示例,需要的朋友可以參考下2015-07-07
Nginx配置React項目Url后直接輸入路由路徑時報404問題的解決
這篇文章主要給大家介紹了關(guān)于Nginx配置React項目Url后面直接輸入路由路徑時報404問題的解決方法,文中通過示例代碼將解決的方法介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
Nginx+Tomcat負(fù)載均衡集群的實現(xiàn)示例
本文主要介紹了Nginx + Tomcat負(fù)載均衡集群的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10

