Heim > Betrieb und Instandhaltung > Nginx > So lösen Sie das Problem, wenn Docker die Nginx-Bindungskonfigurationsdatei nicht ausführen kann

So lösen Sie das Problem, wenn Docker die Nginx-Bindungskonfigurationsdatei nicht ausführen kann

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2023-05-17 09:34:05
nach vorne
998 Leute haben es durchsucht

Die direkte Ausführung des Startbefehls schlägt fehl

Bild ziehen:

docker pull nginx
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

跑起来一个nginx容器:

docker run -d --name nginx nginx
Nach dem Login kopieren

复制配置文件和文件夹到宿主机指定目录:

docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/
docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf.d
Nach dem Login kopieren

删除原容器:

docker rm -f nginx
Nach dem Login kopieren

运行启动命令,-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
Nach dem Login kopieren
Nach dem Login kopieren

移动copy的conf.d目录中的文件到正确的位置:

 mv /mydata/nginx/conf.d/* /mydata/nginx/conf/conf.d/
 rm -rf /mydata/nginx/conf.d
Nach dem Login kopieren

这样nginx容器就可以正常运行,并且我们通过上面的操作将nginx.conf文件和conf.d目录都映射到了宿主主机上,以后需要修改nginx.conf文件或者为conf.d添加.conf

Und erstellen Sie direkt eine leere /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!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Docker installiert PHPStudy
Aus 1970-01-01 08:00:00
0
0
0
Über Docker
Aus 1970-01-01 08:00:00
0
0
0
Docker: Ungültiges Referenzformat
Aus 1970-01-01 08:00:00
0
0
0
Docker-Pull-Fehler?
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage