docker运行nginx绑定配置文件失败如何解决

其他教程   发布日期:2023年06月26日   浏览次数:507

这篇文章主要介绍了docker运行nginx绑定配置文件失败如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇docker运行nginx绑定配置文件失败如何解决文章都会有所收获,下面我们一起来看看吧。

直接执行启动命令会失败

pull镜像:

  1. docker pull nginx

然后执行启动命令:

  1. docker run -d -p 80:80 -p 443:443 --name nginx
  2. -v /mydata/nginx/html:/usr/share/nginx/html
  3. -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
  4. -v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d
  5. -v /mydata/nginx/logs:/var/log/nginx
  6. -v /mydata/nginx/cache:/var/cache/nginx
  7. --restart=always nginx

如果

  1. /mydata/nginx/conf/nginx.conf
文件不存在,这里会出现docker报错,因为docker不允许绑定不存在的文件。

而直接新建一个空的

  1. /mydata/nginx/conf/nginx.conf
虽然docker不会报错,但是nginx却无法在容器中正常启动,通过
  1. docker ps -a
命令查看,nginx会处于
  1. exit
或者一直
  1. restart
状态,因为nginx的运行依赖于
  1. nginx.conf
这个配置文件中的相关配置。

解决思路及办法

先运行一个容器,不使用-v绑定,然后将容器中的相关文件直接copy到指定位置,之后就可以删除容器,直接运行之前的启动命令了。

具体操作如下:

首先创建好相关文件夹:

  1. mkdir -p
  2. /mydata/nginx/html
  3. /mydata/nginx/conf
  4. /mydata/nginx/logs
  5. /mydata/nginx/cache

跑起来一个nginx容器:

  1. docker run -d --name nginx nginx

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

  1. docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/
  2. docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf.d

删除原容器:

  1. docker rm -f nginx

运行启动命令,-v绑定相关卷:

  1. docker run -d -p 80:80 -p 443:443 --name nginx
  2. -v /mydata/nginx/html:/usr/share/nginx/html
  3. -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
  4. -v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d
  5. -v /mydata/nginx/logs:/var/log/nginx
  6. -v /mydata/nginx/cache:/var/cache/nginx
  7. --restart=always nginx

移动copy的

  1. conf.d
目录中的文件到正确的位置:
  1. mv /mydata/nginx/conf.d/* /mydata/nginx/conf/conf.d/
  2. rm -rf /mydata/nginx/conf.d

这样nginx容器就可以正常运行,并且我们通过上面的操作将

  1. nginx.conf
文件和
  1. conf.d
目录都映射到了宿主主机上,以后需要修改
  1. nginx.conf
文件或者为
  1. conf.d
添加
  1. .conf
文件都只需要在宿主机上的对应位置操作即可。

以上就是docker运行nginx绑定配置文件失败如何解决的详细内容,更多关于docker运行nginx绑定配置文件失败如何解决的资料请关注九品源码其它相关文章!