问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

前端页面部署到Nginx容器并制作镜像的完整教程

创作时间:
2025-03-20 07:09:49
作者:
@小白创作中心

前端页面部署到Nginx容器并制作镜像的完整教程

引用
CSDN
1.
https://blog.csdn.net/guiliangfeng/article/details/143811981

本文将详细介绍如何将前端页面(基于Vue或HTML/CSS/JS等)部署到Nginx容器,并将其制作成镜像,以便在其他服务器上快速部署。通过Docker的容器化部署方式,可以实现开箱即用的目标。

1. 开发好web前端页面后发布到文件夹

例如:D:\Web\dist

2. 在docker 中创建nginx容器

docker run --name mynginx -d -p 80:80 nginx

此命令会创建一个名为 mynginx 的容器,并在宿主机的 80 端口上提供服务。

3. 找到 Nginx 的默认 HTML 路径

Nginx 默认的 HTML 文件目录是 /usr/share/nginx/html,可以通过以下命令确认:

docker exec -it mynginx /bin/bash

进入容器后查看默认路径内容:

ls /usr/share/nginx/html

通常会看到文件如 index.html

[root@iZwz9dboq7pwthuwyj8svwZ ~]# docker exec -it testnginx /bin/bashroot@e7ade13e73b9:/# ls /usr/share/nginx/html50x.html	assets	     favicon1.ico  index.js  logo1.png_app.config.js	favicon.ico  index.html    logo.png  resource

4. 上传 HTML 文件到容器

将 HTML 文件上传到容器的 /usr/share/nginx/html 目录。

假设宿主机的 HTML 文件路径是 /root/nginxhtml/index.html,使用以下命令:

docker cp /root/nginxhtml/index.html mynginx:/usr/share/nginx/html/index.html

如果你需要将宿主机 /root/nginxhtml/ 目录下的所有文件上传到 Nginx 容器的 /usr/share/nginx/html 目录,可以一次性复制整个目录而不是单个文件。

上传整个目录执行以下命令:

docker cp /root/nginxhtml/. mynginx:/usr/share/nginx/html/

5. 检查上传结果

进入容器查看文件是否已成功上传:

docker exec -it mynginx /bin/bash

确认 index.html 文件是否存在。

6. 访问网页

通过浏览器访问容器所在服务器的 IP 地址,例如:

http://<宿主机IP>:80

你应该可以看到上传的网页。

额外提示

(1). 替换文件时确保清空旧目录

如果你希望上传文件时清空容器中已有的文件,可以先清空目标目录:

docker exec -it mynginx /bin/bashrm -rf /usr/share/nginx/html/*

(2). 然后再执行上传命令:

docker cp /root/nginxhtml/. mynginx:/usr/share/nginx/html/

(3). 上传完成后重新加载 Nginx

如果容器内的 Nginx 服务没有自动检测到文件变更,手动重载配置:

docker exec -it mynginx /bin/bash

7. 基于正在运行的容器mynginx制作一个新的镜像

基于容器制作镜像的步骤:

7.1 确认目标容器运行正常

确保你已经配置好目标容器,例如上传了 /root/nginxhtml 目录的文件,并检查 Nginx 服务是否正常运行。

使用以下命令查看容器运行状态:

docker ps

确认容器名称(例如 mynginx)或容器 ID。

7.2 使用 docker commit 创建镜像

运行以下命令,将容器保存为一个新的镜像:

docker commit mynginx mynginx-image:v1

参数说明

  • mynginx:正在运行的容器名称或容器 ID。
  • mynginx-image:v1:新镜像的名称和版本号,你可以自定义。

7.3 查看新镜像

执行以下命令查看新创建的镜像:

docker images

你应该能看到 mynginx-image 的镜像名。

示例输出:

REPOSITORY        TAG       IMAGE ID       CREATED          SIZEmynginx-image     v1        123abc456def   10 seconds ago   133MB

7.4 测试新镜像

基于新的镜像启动一个容器,确认功能正常:

docker run --name testnginx -d -p 8080:80 mynginx-image:v1

通过访问 http://<宿主机IP>:8080,验证网页内容是否正确。

7.5 将镜像保存为文件(可选)

如果需要将镜像分发到其他服务器,可以将镜像保存为 .tar 文件:

docker save -o mynginx-image.tar mynginx-image:v1

注意:这个生成的mynginx-image.tar文件在当前目录下。例如:用户在/root 目录下执行了上面这条语句,那么生成的文件的路径就是 /root/mynginx-image.tar

7.6 将生成的 mynginx-image.tar 文件拷贝到其他服务器

进入到镜像文件所在目录,然后用以下命令加载:

docker load -i mynginx-image.tar
[root@iZwz9dboq7pwthuwyj8svwZ myimagefiles]# cd ..[root@iZwz9dboq7pwthuwyj8svwZ ~]# ls[root@iZwz9dboq7pwthuwyj8svwZ ~]# docker load -i scxnginx-imagev1.taropen scxnginx-imagev1.tar: no such file or directory[root@iZwz9dboq7pwthuwyj8svwZ ~]# cd myimagefiles[root@iZwz9dboq7pwthuwyj8svwZ myimagefiles]# docker load -i scxnginx-imagev1.tarLoaded image: scxnginx-image:v1[root@iZwz9dboq7pwthuwyj8svwZ myimagefiles]# docker imagesREPOSITORY            TAG       IMAGE ID       CREATED        SIZEscxnginx-image        v1        7d79ebcbfa99   16 hours ago   159MBscxnginximage         latest    af259e43f1ba   19 hours ago   141MBschoola               latest    a4afc6b42d89   6 days ago     222MBdotnet6_test          v2        27f9a2725126   8 days ago     217MBnginx                 latest    605c77e624dd   2 years ago    141MBmysql                 latest    3218b38490ce   2 years ago    516MBcentos                latest    5d0da3dc9764   3 years ago    231MBportainer/portainer   latest    580c0e4e98b0   3 years ago    79.1MB[root@iZwz9dboq7pwthuwyj8svwZ myimagefiles]# 

我的镜像文件放在 /root/imagefiles/ 目录下

7.7 启动一个新容器验证镜像

[root@iZwz9dboq7pwthuwyj8svwZ myimagefiles]# docker run --name testnginx03 -d -p 8089:80 scxnginx-image:v1f90716401509debb1b28bf3223086a2a90b429e30b4bc5ad5358b2efca567821[root@iZwz9dboq7pwthuwyj8svwZ myimagefiles]# 

这个时候访问http://:8089 应该能看到web网页了。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号