docker运行nginx绑定配置文件失败原因以及问题解决
直接执行启动命令会失败
pull镜像:
docker pull nginx
然后执行启动命令:
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
如果/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
文件都只需要在宿主机上的对应位置操作即可。
总结
到此这篇关于docker运行nginx绑定配置文件失败原因以及问题解决的文章就介绍到这了,更多相关docker运行nginx绑定配置文件失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
docker镜像仓库hub.docker.com无法访问的解决方法
最近许多群友都询问为什么无法访问Docker镜像仓库,本文就来介绍一下docker镜像仓库hub.docker.com无法访问的解决方法,感兴趣的可以了解一下2023-08-08写给前端的nginx配置指南基于docker所有配置秒级运行(最新讲解)
这篇文章主要介绍了写给前端的nginx配置指南基于docker所有配置秒级运行,通过 docker 高效学习 nginx 配置,本文给大家介绍的非常详细,需要的朋友可以参考下2022-06-06Intellij IDEA快速实现Docker镜像部署的方法步骤
本文主要介绍了Intellij IDEA快速实现Docker镜像部署的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-09-09解决Docker network Create加--subnet后遇到问题
这篇文章主要介绍了解决Docker network Create加--subnet后遇到问题。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11Docker镜像推送(push)到Docker Hub的实现
这篇文章主要介绍了Docker镜像推送(push)到Docker Hub的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09
最新评论