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

发布时间 - 2023-05-17 00:00:00    点击率:

直接执行启动命令会失败

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  # copy  # 绑定  # 不存在  # 报错  # 配置文件  # 就可以  # 只需  # 要在  # 镜像  # 机上  # 正常运行 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  php 三元运算符实例详细介绍  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel观察者模式如何使用_Laravel Model Observer配置  如何快速搭建高效简练网站?  如何构建满足综合性能需求的优质建站方案?  黑客如何通过漏洞一步步攻陷网站服务器?  如何快速搭建支持数据库操作的智能建站平台?  再谈Python中的字符串与字符编码(推荐)  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  网站制作大概多少钱一个,做一个平台网站大概多少钱?  详解阿里云nginx服务器多站点的配置  JavaScript常见的五种数组去重的方式  如何在Windows虚拟主机上快速搭建网站?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  QQ浏览器网页版登录入口 个人中心在线进入  网易LOFTER官网链接 老福特网页版登录地址  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  如何在局域网内绑定自建网站域名?  Thinkphp 中 distinct 的用法解析  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Swift开发中switch语句值绑定模式  bing浏览器学术搜索入口_bing学术文献检索地址  javascript读取文本节点方法小结  js实现点击每个li节点,都弹出其文本值及修改  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Laravel如何使用Sanctum进行API认证?(SPA实战)  LinuxCD持续部署教程_自动发布与回滚机制  教你用AI润色文章,让你的文字表达更专业  PHP 500报错的快速解决方法  深圳网站制作的公司有哪些,dido官方网站?  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel如何处理和验证JSON类型的数据库字段  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel如何使用模型观察者?(Observer代码示例)  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何配置任务调度?(Cron Job示例)  Laravel如何实现用户密码重置功能?(完整流程代码)  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  linux写shell需要注意的问题(必看)  javascript中的try catch异常捕获机制用法分析