这篇文章是对 nginx 的一个实战应用,同时进行内容补充,结合了 docker 让使用 nginx 部署服务更方便
前提
操作环境 M2
使用的是 Homebrew 安装 Ngnix
因为是上一篇的实战介绍,因此省略理论步骤,直接说具体操作步骤
需求就是将本地前端的项目映射到本地 docker 中的 nginx 中,这样当前本地前端文件修改会实时反馈到 nginx 的服务器中,不用手动拷贝文件
确认docker 环境
判断是否已经启动了 docker
1 | docker info |
如果 Docker 已经启动并正常运行,你会看到 Docker 的详细信息输出。如果 Docker 未启动或有问题,你将会看到相应的错误消息
启动 docker
1 | open -a Docker |
这将启动 Docker Desktop。如果你已经安装并配置好了 Docker Desktop,它会开始启动 Docker 引擎
镜像
查看当前本地安装的镜像
1 | docker images |
我之前安装过,如果没有安装,使用命令
1 | docker pull nginx |
nginx 端口确认
因为之前本地有一个 nginx,非 docker 的,也启动过,所以先关了之前的,防止默认的 80 端口冲突
如果启动了,则关掉,这里我是 homebrew 安装的
1 | brew services stop nginx |
其他方式的,如果是Linux 等
1 | sudo nginx -s stop |
使用 Nginx 镜像创建 Docker 容器
1 | docker run --name my-nginx-container -p 80:80 -d nginx |
启动之后,可以浏览器访问 http://localhost/ 查看是否启动成功
进入容器一探究竟
了解一下容器里面的配置,其实容器底层就是一个轻量级的 Linux 操作系统,然后包含一个 nginx 服务器
进去的命令:
1 | docker exec -it my-nginx-container /bin/bash |
[!CAUTION]
里面默认是没有安装 vim 的,所以我想编辑容器中的配置文件没成功,可以手动安装,也可以使用
docker cp
复制文件到本地编辑,再复制到容器,这里文章先跳过
使用docker compose 一键启动
前提介绍
使用 ~
时,你是在引用当前用户的主目录。~
是当前用户主目录的快捷方式。在 macOS 中,用户主目录通常位于 /Users/huangben
,其中 huangben
是你的用户名。
例如:
~/Documents
实际上指向 /Users/username/Documents
。
使用 /
时,你是在引用文件系统的根目录。
历史原因
docker compose
和 docker-compose
是两个不同的命令。
docker compose
:- 这是 Docker CLI 的一个子命令,集成在 Docker CLI 中。
- 从 Docker 版本 20.10 开始,Docker CLI 中包含了
docker compose
命令。 - 你可以通过
docker compose version
查看版本信息。
docker-compose
:- 这是一个独立的工具,通常作为一个单独的二进制文件安装。
- 你可以通过
docker-compose --version
查看版本信息。
这两个命令的功能基本相同,但 docker compose
是 Docker CLI 的一部分,而 docker-compose
是一个独立的工具。
如果你希望使用独立的 docker-compose
工具,可以通过 Homebrew 或其他方式安装它。
推荐 docker compose
准备环境
因为之前my-nginx-container ,所以先删除掉,避免后面容器名称冲突
1 | docker rm my-nginx-container |
实际操作
- 在当前
~
下面创建一个目录nginx-project
,用来存放接下来的网站内容和配置
1 | └── nginx-project/ |
1 | # docker-compose.yml yml 是 yaml 简写方式 |
左侧是宿主(自己的 MAC) : 容器
[!NOTE]
挂载(volumes)将宿主机的目录挂载到容器中时,实际上是创建了一个映射关系,而不是物理复制
/Users/huangben/Documents/bighb-code/Vue/hello_vue3/dist
这里是我本地随便一个文件的前端项目
需要在打开 Docker Desktop 设置
配置共享路径
- 在左侧菜单中,选择 Resources(资源)。
- 然后选择 File Sharing(文件共享)。
- 在右侧的输入框中添加你的路径
/Users/huangben/Documents/bighb-code/Vue/hello_vue3/dist
,点击右侧+
- 点击 Apply & Restart(应用并重启)按钮,以保存更改并重启 Docker。
启动运行docker-compose
1
docker compose up -d
运行80 端口,显示成功 !
重启docker compose
修改了配置文件需要重启(静态文件不用重启)
1 | docker compose exec web nginx -s reload |
停止docker compose
停止所有由 docker compose
启动的服务。
1 | docker compose stop |
停止特定服务
1 | docker compose stop web |
这里的 web
是在 docker-compose.yml
文件中定义的服务名称。根据你的配置文件中的服务名称替换 web
。
完全移除容器
1 | docker compose down |
这将停止并删除所有服务的容器、网络和其他相关资源
检测是否停止
1 | ps aux | grep nginx |