Heim >Betrieb und Instandhaltung >Nginx >So lösen Sie das Problem, wenn Docker die Nginx-Bindungskonfigurationsdatei nicht ausführen kann
Bild ziehen:
docker pull nginx
Dann führen Sie den Startbefehl aus:
docker run -d -p 80:80 -p 443:443 --name nginx \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /mydata/nginx/logs:/var/log/nginx \ -v /mydata/nginx/cache:/var/cache/nginx \ --restart=always nginx
Wenn die Datei /mydata/nginx/conf/nginx.conf
nicht vorhanden ist, Hier wird ein Docker-Fehler angezeigt, da Docker das Binden nicht vorhandener Dateien nicht zulässt. /mydata/nginx/conf/nginx.conf
文件不存在,这里会出现docker报错,因为docker不允许绑定不存在的文件。
而直接新建一个空的/mydata/nginx/conf/nginx.conf
虽然docker不会报错,但是nginx却无法在容器中正常启动,通过docker ps -a
命令查看,nginx会处于exit
或者一直restart
状态,因为nginx的运行依赖于nginx.conf
这个配置文件中的相关配置。
先运行一个容器,不使用-v绑定,然后将容器中的相关文件直接copy到指定位置,之后就可以删除容器,直接运行之前的启动命令了。
具体操作如下:
首先创建好相关文件夹:
mkdir -p \ /mydata/nginx/html \ /mydata/nginx/conf \ /mydata/nginx/logs \ /mydata/nginx/cache
跑起来一个nginx容器:
docker run -d --name nginx nginx
复制配置文件和文件夹到宿主机指定目录:
docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/ docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf.d
删除原容器:
docker rm -f nginx
运行启动命令,-v绑定相关卷:
docker run -d -p 80:80 -p 443:443 --name nginx \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /mydata/nginx/logs:/var/log/nginx \ -v /mydata/nginx/cache:/var/cache/nginx \ --restart=always nginx
移动copy的conf.d
目录中的文件到正确的位置:
mv /mydata/nginx/conf.d/* /mydata/nginx/conf/conf.d/ rm -rf /mydata/nginx/conf.d
这样nginx容器就可以正常运行,并且我们通过上面的操作将nginx.conf
文件和conf.d
目录都映射到了宿主主机上,以后需要修改nginx.conf
文件或者为conf.d
添加.conf
/mydata/nginx/conf/nginx.conf
. Obwohl Docker keinen Fehler meldet, kann nginx nicht normal im Container starten /code> befindet sich nginx im Status exit
oder immer restart
, da der Betrieb von nginx von der Konfigurationsdatei nginx.conf
abhängt entsprechende Konfiguration. 🎜🎜Lösungsideen und -methoden🎜🎜Führen Sie zunächst einen Container aus, ohne die -v-Bindung zu verwenden, und kopieren Sie dann die relevanten Dateien im Container direkt an den angegebenen Speicherort. Anschließend können Sie den Container löschen und den vorherigen Startbefehl direkt ausführen. 🎜🎜Die spezifischen Vorgänge sind wie folgt: 🎜🎜Erstellen Sie zunächst die relevanten Ordner: 🎜rrreee🎜Führen Sie einen Nginx-Container aus: 🎜rrreee🎜Kopieren Sie die Konfigurationsdateien und Ordner in das angegebene Verzeichnis auf dem Host: 🎜rrreee🎜Löschen Sie den ursprünglichen Container: 🎜rrreee🎜Run Starten Sie den Befehl, -v bindet das entsprechende Volume: 🎜rrreee🎜Verschieben Sie die Dateien im kopierten Verzeichnis conf.d
an den richtigen Speicherort: 🎜rrreee🎜Auf diese Weise wird der Nginx-Container erstellt kann normal ausgeführt werden, und wir übergeben den oben genannten Vorgang. Der Vorgang ordnet sowohl die Datei nginx.conf
als auch das Verzeichnis conf.d
dem Host-Computer zu Ändern Sie die Datei nginx.conf
oder ersetzen Sie sie durch conf.d. Um eine Datei .conf
hinzuzufügen, müssen Sie nur am entsprechenden Speicherort vorgehen auf dem Host. 🎜Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, wenn Docker die Nginx-Bindungskonfigurationsdatei nicht ausführen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!