面向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 ,就可以看到效果。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
2月前
|
Web App开发 前端开发 JavaScript
Web开发者必收藏的10个实用网站,你还没收藏吗?
将这些网站收藏起来,定期访问,使它们成为您日常工作的一部分,助您在快速发展的 Web 开发领域保持领先。
133 2
Web开发者必收藏的10个实用网站,你还没收藏吗?
|
1月前
|
人工智能 搜索推荐 PHP
PHP在Web开发中的璀璨星辰:构建动态网站的幕后英雄###
【10月更文挑战第25天】 本文将带您穿越至PHP的宇宙,揭示其作为Web开发常青树的奥秘。通过生动实例与深入解析,展现PHP如何以简便、高效、灵活的姿态,赋能开发者打造动态交互式网站,同时不忘探讨其在新时代技术浪潮中面临的挑战与机遇,激发对技术创新与应用的无限思考。 ###
38 1
WK
|
1月前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
104 0
|
2月前
|
Docker 容器
docker nginx-proxy 添加自定义https网站
docker nginx-proxy 添加自定义https网站
46 4
|
2月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
41 0
|
3月前
|
前端开发 JavaScript
构建你的第一个Web应用:从零到部署
【8月更文挑战第33天】 在这篇文章中,我们将一起踏上构建一个基本Web应用的旅程。不同于传统的“安装这个、运行那个”教程,我们的目标是通过理解每一步的意义和目的来深化你的技术理解。我们将探索HTML、CSS、JavaScript的基础,并学习如何将它们结合起来创建一个简单的个人网站。接着,我们会介绍如何使用GitHub Pages进行免费部署,让你的应用上线。准备好了吗?让我们开始吧!
104 5
|
3月前
|
负载均衡 网络协议 应用服务中间件
web群集--rocky9.2源码部署nginx1.24的详细过程
Nginx 是一款由 Igor Sysoev 开发的开源高性能 HTTP 服务器和反向代理服务器,自 2004 年发布以来,以其高效、稳定和灵活的特点迅速成为许多网站和应用的首选。本文详细介绍了 Nginx 的核心概念、工作原理及常见使用场景,涵盖高并发处理、反向代理、负载均衡、低内存占用等特点,并提供了安装配置教程,适合开发者参考学习。
|
3月前
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
642 1
|
4月前
|
Java UED 自然语言处理
Struts 2 国际化竟有如此神奇魔力?快来揭开多语言支持的 Web 应用神秘面纱
【8月更文挑战第31天】在全球化背景下,Web应用需适应多种语言环境。Struts 2凭借其强大的国际化(i18n)支持,简化了多语言应用开发。通过不同语言的资源文件,它能自动匹配用户语言偏好,优化用户体验并扩展用户群。下面是一个示例:创建`messages.properties`(英语)与`messages_zh_CN.properties`(中文),并在Struts 2的Action类及JSP页面中调用`getText()`方法及Struts标签展示相应语言内容。此外,在struts.xml中指定资源文件,以确保框架正确加载对应语言包。通过这些步骤,开发者可以轻松实现应用的多语言支持。
71 0