Docker+Nginx部署vue项目

这篇文章给大家分享一下如何使用Docker+Nginx部署前端vue项目。

第一步:创建vue项目

执行这个命令,创建一个vue项目

npm create vue@3

将vue项目打包

npm run build

此时会看到vue工程中生成了一个dist文件,我们将他上传到服务器中。
在这里插入图片描述

第二步:将dist文件夹打包上传至服务器

我这里将dist文件夹上传到了服务器的/www/wwwroot/vue-app路径下
在这里插入图片描述

第三步:在dist文件夹所在路径下新建Dockerfile文件

#Dockerfile
FROM nginx:latest

第四步: 在dist文件夹所在路径下新建docker-compose.yml文件

# docker-compose.yml
services:
  web:
    # 使用官方 Nginx 镜像
    build: .
    # 为了防止和其他nginx容器冲突,给nginx容器取一个唯一的名字
    container_name: nginx-vue-container

    # 将当前目录下的nginx.conf文件复制到 Nginx 容器的 /etc/nginx/ 目录下
    # 这里假设您的 Nginx 配置文件命名为 nginx.conf
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      # 将当前目录下的dist文件夹中的文件复制到nginx容器的
      - ./dist:/usr/share/nginx/html

    # 映射端口 8080:8080 使得 Nginx 服务可以通过主机的 8080 端口访问
    ports:
      - "8080:8080"

    # 启动 Nginx 服务
    command: ["nginx", "-g", "daemon off;"]

第五步: 在dist文件夹所在目录下新建nginx.conf配置文件

events {
  worker_connections 1024;
}

http {
    include       /etc/nginx/mime.types;
    
    default_type  text/html;

    server {
    
        listen 8080;
        # 配置已解析的域名, 如果需要的话,没有域名可以去掉这一组server
        server_name *.xxx.com;
    
        root /usr/share/nginx/html;
        
        index index.html;
    
        location / {
        	# 如果vue项目使用了history模式的路由, 则务必需要加上此配置, 否则会出现404错误
        	# try_files 指令用于尝试按顺序查找请求的文件或目录,如果找不到,
        	# 最后提供 index.html 文件,这对于单页应用程序(SPA)的路由非常重要。
            try_files $uri $uri/ /index.html;
        }
    }
    
      # 处理 IP 地址请求的 server 块
      server {
        listen 8080;
        
        server_name 127.0.0.1; # 替换为您的服务器 IP 地址
    
        root /usr/share/nginx/html;
    
        index index.html;
    
        location / {
          try_files $uri $uri/ /index.html;
        }
    }
}

现在,服务器上有有这些文件。
在这里插入图片描述
接下来,我们就可以输入命令运行镜像了。

第六步: 在dist文件夹所在目录执行命令构建镜像并运行

  1. 构建镜像
    docker-compose build
  2. 运行镜像
    docker-compose up -d
  3. 查看镜像
    docker-compose ps

如果我们看到nginx服务运行在8080端口,则代表部署成功,现在就可以输入域名或者服务器ip来访问前端页面了。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/542592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

步骤大全:网站建设3个基本流程详解

一.领取一个免费域名和SSL证书,和CDN 1.打开网站链接:https://www.rainyun.com/z22_ 2.在网站主页上,您会看到一个"登陆/注册"的选项。 3.点击"登陆/注册",然后选择"微信登录"选项。 4.使用您的…

VMware Workstation部署最新版OpenWrt 23.05.3

正文共:1456 字 51 图,预估阅读时间:2 分钟 我们之前介绍了如何在VMware Workstation上安装OpenWrt(软路由是啥?OpenWrt又是啥?长啥样?在VMware装一个瞅瞅),也介绍了如何…

LRUCache原理及源码实现

目录 LRUCache简介: LRUCache的实现: LinkedHashMap方法实现: 自己实现链表: 前言: 有需要本文章源码的友友请前往:LRUCache源码 LRUCache简介: LRU是Least Recently Used的缩写&#xf…

扣子Coze插件教程:如何使用Coze IDE创建插件

🧙‍♂️ 诸位好,吾乃斜杠君,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &#…

通过一篇文章让你了解Linux的重要性

Linux 前言一、什么是Linux后台vs前台为何大多数公司选择使用Linux作为后台服务器 二、Linux的背景介绍UNIX发展的历史Linux发展历史开源官网发行版本DebianUbuntu红帽企业级LinuxCentOSFedoraKali Linux 三、国内企业后台和用户使用Linux现状IT服务器Linux系统应用领域嵌入式L…

每日OJ题_01背包④_力扣1049. 最后一块石头的重量 II

目录 力扣1049. 最后一块石头的重量 II 问题解析 解析代码 滚动数组优化代码 力扣1049. 最后一块石头的重量 II 1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意…

挑战全网,看谁能用栈和队列解决更多问题

1.栈 2.队列 3.栈和队列面试题 正文开始: 1. 栈 1.1 栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 栈中的数据元素遵守 后…

项目之旅(前两周)

文章目录 学习总结input1.text 文本框2.password 密码框3.button 按钮4.file 文件还可定义上传类型 5.日期6.radio 单选框7. checkbox 复选框 项目总结生活总结 学习总结 input 本次写项目时才发现,input有很多种用法,这里列举几种 1.text 文本框 不…

嵌入式音视频进阶学习(建议收藏!)

前言: 大家好,今天花点时间,整理一下最近看的一些音视频英文文档资料和相关的一些音视频书籍,下面分享的资料,仅是个人的一个学习,仅供参考! rtp学习: 在这里给大家汇总的资料&#…

如何在Linux部署MeterSphere并实现公网访问进行远程测试工作

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

LlamaIndex 文档1

文章目录 关于 LlamaIndex🚀 为什么要进行上下文增强?🦙 为什么使用 LlamaIndex 进行上下文增强?👨‍👩‍👧‍👦 LlamaIndex 适合谁? 入门🗺️生态系统社区相…

C++引用和右值引用

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

计算机网络 Cisco静态路由实验

一、实验要求与内容 1、路由器的基本配置 (1)命名 (2)关闭域名解析 (3)设置路由接口IP地址 2、配置静态路由以实现所有客户机都能互相通信 3、配置默认路由 4、了解ping命令和trace(跟踪…

Bug的定义生命周期

1、bug的定义 你们觉得bug是什么? 软件的Bug狭义概含是指软件程序的漏洞或缺陷, 广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节(增强性,建议性)、或 与需求文档存在差异的功能实现等。 我们的职责就是,发现这些B…

正则表达式 速成

正则表达式的作用 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字…

轻量级 S3 协议存储客户端

目前大家一般不会把二进制文件直接放在应用服务器上,而是存在“对象存储”的方案中,例如亚马逊的 AWS,阿里云的 OSS、Cloudflare R2 等。AWS 为最早的始作俑者,因此其 S3 协议也近乎标准化,各大厂商的对象存储方案都实…

【C++类和对象】构造函数与析构函数

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

【grpc】grpc进阶二,grpc认证方式

本章把之前的工程结构改了一下,创建了 server 和 client 两个目录,分别把 server.go,client.go 移动过去。 接下来会介绍 grpc 的 TLS 认证和 Oauth2 一、TLS认证 在进行功能验证是需要使用 openssl 创建自有证书,下面是创建步骤…

Paddle实现人脸对比(二)

我之前发过一篇基于孪生网络的人脸对比的文章,这篇文章也到了百度的推荐位置: 但是,效果并不是很好。经过大量的搜索,我发现了一种新的方法,可以非常好的实现人脸对比。 原理分析 我们先训练一个普通的人脸分类模型&…