卡了我5个小时,却是简单的问题!Linux 下使用docker nginx镜像挂载web项目

项目背景

服务器环境是后端搭建的,我负责前端,但是小公司,那家伙跑路了。2023/12/27服务器突然宕机了,所以需要重启镜像,原来是后端那家伙搞,我只负责上传前端项目。

以下都是废话,请直接拉到底

开始操作

运行了docker run --name mynginx -d -p 80:80启动nginx容器 容器启动成功,但访问后一直是nginx的欢迎页。

这个时候问题来了

我很懵逼,nginx配置我根本就没有改动;我去查看了nginx.conf配置文件,发现配置的项目路径为/usr/local/share/nginx/html,而实际的项目路径为/docker/nginx/html;那我怎么搞,当然是把路径改了重启一下,然后发现根本没有用。

我又重新改了配置文件,重启后发现还是没用;然后我删了这个配置文件,发现完全没影响。给你你懵不懵?

这个时候就可以排除配置文件的问题了,我去问了各大搜索引擎和ChatGPT,这个配置文件在哪里,它们都说是在/etc/nginx/nginx.conf,然后我etc文件夹下根本就没有nginx这个文件夹,我能怎么办,我也很绝望。 我只能另辟蹊径,寻找这个配置文件在哪里,于是我运行了这个指令docker exec -it 容器ID或名称 find / -name nginx.conf;返回了这么一个结果/etc/nginx/nginx.conf

这个时候我猜想,这个镜像的配置文件应该是看不到,可以可以直接修改文件,于是有了这般操作

是的,完全没有用!!!

死马当活马医,尝试了下面的操作,诶别说,终于不是欢迎页了。

启动nginx镜像

txt 复制代码
docker run --name mynginx -d -p 80:80 --privileged=true -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/html:/etc/nginx/html -v /docker/nginx/log:/var/log/nginx nginx:latest

其实这个指令不是第一次用,之前的过程中也是尝试了的,应该是哪个配置不对导致的不成功。

以下是这条指令的解释,来源于ChatGPT

这条 docker run 命令用于在 Docker 中启动一个名为 mynginx 的 Nginx 容器。让我们逐个解释其中的参数和选项:

  • --name mynginx:为容器指定一个名称,即 mynginx。这样在后续的操作中,可以使用容器名称来引用这个容器。

  • -d:表示在后台运行容器(即以守护进程方式运行)。

  • -p 80:80:将主机的 80 端口映射到容器的 80 端口,这样可以通过主机的 80 端口访问 Nginx 服务。

  • --privileged=true:授予容器特权,这允许容器访问主机的设备和文件系统,这通常用于需要与主机进行更多交互的特殊情况。

  • -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将主机上的 /docker/nginx/conf/nginx.conf 文件挂载到容器内的 /etc/nginx/nginx.conf 文件,这样可以在主机上编辑 Nginx 的配置文件,并且更改会立即生效在容器内。

  • -v /docker/nginx/html:/etc/nginx/html:将主机上的 /docker/nginx/html 目录挂载到容器内的 /etc/nginx/html 目录,这样可以将主机上的网站文件挂载到容器中,使 Nginx 可以直接访问这些文件。

  • -v /docker/nginx/log:/var/log/nginx:将主机上的 /docker/nginx/log 目录挂载到容器内的 /var/log/nginx 目录,这样可以将容器内的 Nginx 日志文件保存到主机上,方便日志的查看和管理。

  • nginx:latest:指定要启动的容器镜像为 Nginx 最新版本。

通过这条命令,我们创建了一个名为 mynginx 的 Nginx 容器,并且将配置文件、网站文件和日志文件从主机挂载到容器内,以便进行配置和数据的管理。

这次运行之后,页面报500,这个时候可以确认改nginx配置文件就行了 nginx的错误日志里是这么提示的

重新改配置

想了想刚才运行的指令是docker run --name mynginx -d -p 80:80 --privileged=true -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/html:/etc/nginx/html -v /docker/nginx/log:/var/log/nginx nginx:latest

指令里的项目路径是 /docker/nginx/html:/etc/nginx/html, 于是我将nginx配置的项目路径改为了/etc/nginx/html, 其实一开始这个路径是/usr/local/share/nginx/html,我先是改成了/docker/nginx/html,完全没有用。

于是乎,当项目路径改为/etc/nginx/html后,项目可以访问了,但这个时候访问接口报404,这个简单,先确认接口是否能正常访问,接口走8080端口,直接访问是可以跑通的,直接在nginx内配置一个重定向就可以了。

以上都是废话

就运行这个就行了

docker run --name 容器名称 -d -p 80:80 --privileged=true -v 项目配置的nginx配置文件路径/nginx.conf:容器使用的nginx配置的文件路径/nginx.conf -v 项目所在路径:容器指定的项目所在路径 -v 实际项目的错误日志路径:容器的错误日志路径 镜像名称

容器使用的nginx配置的文件路径可以使用这条指令获取 docker exec -it 容器名称 find / -name nginx.conf

相关推荐
zhougl9961 小时前
html处理Base文件流
linux·前端·html
花花鱼1 小时前
node-modules-inspector 可视化node_modules
前端·javascript·vue.js
HBR666_1 小时前
marked库(高效将 Markdown 转换为 HTML 的利器)
前端·markdown
careybobo2 小时前
海康摄像头通过Web插件进行预览播放和控制
前端
杉之4 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
喝拿铁写前端4 小时前
字段聚类,到底有什么用?——从系统混乱到结构认知的第一步
前端
再学一点就睡4 小时前
大文件上传之切片上传以及开发全流程之前端篇
前端·javascript
木木黄木木5 小时前
html5炫酷图片悬停效果实现详解
前端·html·html5
viqecel5 小时前
网站改版html页面 NGINX 借用伪静态和PHP脚本 实现301重定向跳转
nginx·php·nginx重定向·301重定向·html页面重定向
请来次降维打击!!!6 小时前
优选算法系列(5.位运算)
java·前端·c++·算法