Maison  >  Article  >  Opération et maintenance  >  Comment résoudre le problème lorsque Docker ne parvient pas à exécuter le fichier de configuration de liaison nginx

Comment résoudre le problème lorsque Docker ne parvient pas à exécuter le fichier de configuration de liaison nginx

WBOY
WBOYavant
2023-05-17 09:34:05915parcourir

L'exécution directe de la commande de démarrage échouera

extraire l'image :

docker pull nginx

Ensuite, exécutez la commande de démarrage :

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

Si le fichier /mydata/nginx/conf/nginx.conf n'existe pas, une erreur Docker apparaîtra ici, car Docker n'autorise pas la liaison de fichiers qui n'existent pas. /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

Et créez directement un /mydata/nginx/conf/nginx.conf vide. Bien que docker ne signale pas d'erreur, nginx ne peut pas démarrer normalement dans le conteneur. /code>, nginx sera dans l'état exit ou toujours restart, car le fonctionnement de nginx dépend du fichier de configuration nginx.conf configuration associée. 🎜🎜Idées et méthodes de solutions🎜🎜Exécutez d'abord un conteneur sans utiliser la liaison -v, puis copiez les fichiers pertinents dans le conteneur directement à l'emplacement spécifié. Après cela, vous pouvez supprimer le conteneur et exécuter directement la commande de démarrage précédente. 🎜🎜Les opérations spécifiques sont les suivantes : 🎜🎜Créez d'abord les dossiers appropriés : 🎜rrreee🎜Exécutez un conteneur nginx : 🎜rrreee🎜Copiez les fichiers et dossiers de configuration dans le répertoire spécifié sur l'hôte : 🎜rrreee🎜Supprimez le conteneur d'origine : 🎜rrreee🎜Exécutez Démarrez la commande, -v lie le volume concerné : 🎜rrreee🎜Déplacez les fichiers dans le répertoire conf.d copié vers le bon emplacement : 🎜rrreee🎜De cette façon, le conteneur nginx peut fonctionner normalement, et nous transmettons ce qui précède. L'opération mappe à la fois le fichier nginx.conf et le répertoire conf.d à l'hôte hôte. À l'avenir, vous devrez le faire. modifier le fichier nginx.conf ou le remplacer par conf.dPour ajouter un fichier .conf, il suffit d'opérer à l'emplacement correspondant sur l'hôte. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer