面向WEB开发人员的Docker(六):使用nginx部署静态网站

简介: 上一期,介绍了使用docker部署开发wordpress,本期来介绍更加贴近前端开发的Docker使用。现在很多前端项目都使用vue,发布的时候将文件生成到默认的 dist 文件夹,本文将展示vue项目发布部署到Docker容器,文章涉及的命令都是基于配置好了docker环境,如果没有安装部署Docker,可以参阅《面向WEB开发的Docker(三):安装Docker》。

image.png

上一期,介绍了使用docker部署开发wordpress,本期来介绍更加贴近前端开发的Docker使用。现在很多前端项目都使用vue,发布的时候将文件生成到默认的 dist 文件夹,本文将展示vue项目发布部署到Docker容器,文章涉及的命令都是基于配置好了docker环境,如果没有安装部署Docker,可以参阅《面向WEB开发的Docker(三):安装Docker》。

命令形式

vue项目生成之后的文件都是静态文件,我们将选用nginx作为WEB服务器,绑定的端口为 80 。本文以项目 《Vue3+Ant Design2+NodeJs全栈管理系统开发》为基础进行构建部署。

进入到项目目录,首先拉取nginx最新的镜像:

docker pull nginx:latest

image.png

完成安装后,开始运行docker容器,由于是vue项目,生成的文件在dist文件夹中,这里我们就以dist作为nginx镜像站点的目录。需要正常运行镜像并绑定端口,涉及一下两个参数:

-d :后台运行容器,并返回容器ID -p :指定端口映射,格式为:主机(宿主)端口:容器端口-v :绑定一个卷,即路径 --name="vue-crayon":为容器指定一个名称,示例使用名称 vue-crayon

docker run -d -p 80:80 -v $PWD/dist:/usr/share/nginx/html  --name="vue-crayon"  nginx

执行完成后将返回的一串长字符串,即为容器ID,这里为:cd7b5d5bb5e833cb9d112f0c3fb43c54e4ae652c16ce52309eb7599cf2d32e7e

可以通过以下命令查看容器是否启动成功:

docker ps

image.png

打开浏览器,输入http://localhost 可以看到如下效果:

image.png

如果本机80端口被占用,可以使用别的端口;如果不想使用http://localhost 地址访问,可以修改 hosts 文件

下面是使用非80端口的执行命令,使用8001:

docker run -d -p 8001:80 -v $PWD/dist:/usr/share/nginx/html  --name="vue-crayon"  nginx

由于展示的代码是vue项目,刷新后会出现404,需要更改nginx配置,有两种方式:

  1. 进入容器修改nginx配置,如果需要进入容器修改,可以执行命令 docker exec -it cd7b5d5bb5e8 bash,其中-it后面一长串字符串为容器id,这里不展开。
  2. nginx配置按照dist文件夹挂载方式进行挂载

下面更改nginx配置,使用挂载的方式,项目中nginx配置路径为 configs/conf.d,在nginx配置项中增加以下配置:

location / {
    try_files $uri $uri/ /index.html;
}

将上面的执行命令稍作修改,完整如下:

docker run -d -p 80:80 -v $PWD/dist:/usr/share/nginx/html -v $PWD/configs/conf.d:/etc/nginx/conf.d  --name="vue-crayon"  nginx

执行完之后,就可以正常访问vue项目,路径也正常。

如果不用了需要删除,可以按照顺序执行一下命令:

展示所有运行容器的信息,主要是容器ID

docker ps

接下来先将容器停止(长串字符串为容器ID):

docker stop 3fd6959eaa90

停止之后就是移除,如下命令(长串字符串为容器ID):

docker rm 3fd6959eaa90

每次测试项目实际运行情况都以命令行的形式,在可操作性上不太方便,下面就来介绍使用Docker Compose

Docker Compose

在项目目录创建文件docker-compose.yml文件,代码如下:

version: "3" # 表示该 Docker-Compose 文件使用的版本为3
services:
    nginx:
        image: nginx:latest
        container_name: vue-crayon
        volumes:
            - ./dist:/usr/share/nginx/html
            - ./configs/conf.d:/etc/nginx/conf.d
        ports:
            - "80:80"
        networks:
            - crayonnet
        restart: on-failure
networks:
    crayonnet:

这样,需要运行,只需要执行以下命令即可启动:

docker-compose up

同样打开浏览器,输入http://localhost ,就可以看到效果。

相关文章
|
9月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
555 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
10月前
|
Java 应用服务中间件 Docker
java-web部署模式概述
本文总结了现代 Web 开发中 Spring Boot HTTP 接口服务的常见部署模式,包括 Servlet 与 Reactive 模型、内置与外置容器、物理机 / 容器 / 云环境部署及单体与微服务架构,帮助开发者根据实际场景选择合适的方案。
526 25
|
12月前
|
存储 应用服务中间件 nginx
在使用Nginx之后,如何在web应用中获取用户IP以及相关原理
但总的来说,通过理解网络通信的基础知识,了解http协议以及nginx的工作方式,我们已经能在大多数情况下准确地获取用户的真实IP地址了,在调试问题或者记录日志时会起到很大的帮助。
736 37
|
10月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
821 0
|
12月前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
1422 12
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
417 19
|
应用服务中间件 Linux nginx
部署使用 CHAT-NEXT-WEB 基于 Deepseek
本文介绍如何在阿里云轻量服务器上部署基于 `Deepseek` 的 `CHAT-NEXT-WEB` 项目。首先,准备一台 Linux 服务器并安装 Docker,确保防火墙允许特定端口访问。接着,通过阿里云容器镜像服务解决国内网络限制问题,将镜像推送到私有仓库并拉取到本地。配置并启动 `chat-next` 项目,使用 Deepseek API 进行优化。最后,安装 Nginx 和 Certbot 配置 HTTPS 访问,确保安全性和自动续签。整个过程需严格遵循官方文档,以避免因网络问题导致的安装失败。
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
1922 13
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
420 0
|
Web App开发 前端开发 JavaScript
Web开发者必收藏的10个实用网站,你还没收藏吗?
将这些网站收藏起来,定期访问,使它们成为您日常工作的一部分,助您在快速发展的 Web 开发领域保持领先。
527 2
Web开发者必收藏的10个实用网站,你还没收藏吗?