卡了我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

相关推荐
码海扬帆:前端探索之旅5 小时前
深度定制 uni-combox:新增功能详解与实战指南
前端·vue.js·uni-app
谷雨不太卷6 小时前
进程的状态码
java·前端·算法
打小就很皮...6 小时前
基于 Python + LangChain + RAG 的知识检索系统实战
前端·langchain·embedding·rag
BJ-Giser6 小时前
Cesium 烟雾粒子特效
前端·可视化·cesium
空中海6 小时前
02 ArkTS 语言与工程规范
java·前端·spring
YJlio6 小时前
7.4.5 Windows 11 企业网络连接与网络重置实战:远程访问、本地策略与故障恢复
前端·chrome·windows·python·edge·机器人·django
Slow菜鸟6 小时前
Codex CLI 教程(五)| Skills 安装指南:面向 Java 全栈工程师打造个人 ECC(V1版)
大数据·前端·人工智能
Lee川6 小时前
打字机是怎么炼成的:Chat 流式输出深度解析
前端·后端·面试
前端若水6 小时前
过渡(transition)高级:贝塞尔曲线、硬件加速
前端·css·css3
Lee川6 小时前
Token 无感刷新与 Logout:前端安全会话管理实战
前端·后端·react.js