docker运行nginx绑定配置文件失败原因以及问题解决
|
直接执行启动命令会失败
pull镜像:然后执行启动命令:- 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却无法在容器中正常启动,通过命令查看,nginx会处于或者一直状态,因为nginx的运行依赖于这个配置文件中的相关配置。
解决思路及办法
先运行一个容器,不使用-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
复制代码 删除原容器:运行启动命令,-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的目录中的文件到正确的位置:- mv /mydata/nginx/conf.d/* /mydata/nginx/conf/conf.d/
- rm -rf /mydata/nginx/conf.d
复制代码 这样nginx容器就可以正常运行,并且我们通过上面的操作将文件和目录都映射到了宿主主机上,以后需要修改文件或者为添加文件都只需要在宿主机上的对应位置操作即可。
总结
到此这篇关于docker运行nginx绑定配置文件失败原因以及问题解决的文章就介绍到这了,更多相关docker运行nginx绑定配置文件失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://www.jb51.net/article/276069.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|
|
|
发表于 2023-2-25 10:43:12
举报
回复
分享
|
|
|
|