docker+vue云服务器打包镜像相关操作

docker+vue云服务器打包镜像相关操作

容器化部署似乎成了当前一个非常主流的趋势,无论是前端还是后端,流行的操作就是给你一个镜像地址,让你自己去拉取镜像并运行镜像。这似乎是运维的工作,但是在没有专有运维的情况下,不得不自己先了解一下。docker相对来说还是比较麻烦的,需要对服务器有一定的了解,还要对Linux命令比较熟练,然而我对这两个都不熟悉,摸索了一段时间,记录一下自己打包docker镜像的完整过程。

〇 步骤

  • 开发vue项目
  • 打包配置
  • 打包部署

一 开发vue项目

使用webpack或者vite创建vue项目,并完成开发

创建项目命令(以vite为例):

npm init vue@latest

等开发完成后,把代码上传到云服务器,可以用Xftp或者Xshell

😢上传时需要删掉node_modules文件夹,不然会出现npm权限相关的问题

二 打包配置

1 NGINX配置

在根目录下新增nginx.config文件,并进行相关的配置:

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;

        # 新增下面这句,其他是默认nginx配置
        # 解决部分前端框架的路由问题,在浏览器刷新报错404
        try_files $uri $uri/ /index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

2 Dockerfile配置

也就是docker打包镜像配置

在根目录下新建Dockerfile文件,并在文件内填写下面的代码:

# 第一阶段:node镜像打包
FROM node:latest AS frontend-builder
WORKDIR /build-app
COPY . .
RUN npm install
RUN npm run build

# 第二阶段:nginx打包
FROM nginx:latest
EXPOSE 80
WORKDIR /app
# 替换nginx配置
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 将第一阶段的静态文件复制到nginx中
RUN rm -rf /usr/share/nginx/html
RUN mkdir /usr/share/nginx/html
COPY --from=frontend-builder /build-app/dist /usr/share/nginx/html

# 运行
CMD ["nginx", "-g", "daemon off;"]

第一个阶段其实就是vue项目的打包

第二个阶段是将nginx中的相关文件进行替换,替换的是第一阶段打包出来的静态文件

三 打包部署

目的是生成镜像文件images,并在docker中运行容器container

打包镜像–>运行镜像

# 打包镜像
docker build -t docker-vue:latest .

:latest是镜像别名(也叫标签),可以不写,默认就是latest,最后面的点号( .)不能省略,省略之后就报错,它的作用是在根目录下面去找打包配置中的Dockerfile文件

接下来就是打包过程,需要打包一段时间

image-20240530102946253打包完成后,就可以在docker中查看镜像文件了,查看命令是:

docker images

image-20240530102852209

可以看到,有个docker-vue镜像了,标签名是latest

接下来可以在docker中运行镜像,命令为:

docker run -d --name docker-vue -p 5174:80 docker-vue:latest

-d 后台运行

–name 容器名

-p 端口, 5174是指宿主机对外暴露的端口,也就是浏览器访问时的端口,80是镜像本身使用的端口,nginx配置时,使用的是80端口

docker-vue:latest 镜像名

执行后,就可通过ip:port访问docker上部署的项目了

image-20240530103633777

可以看到,这是一个用vite创建的默认的vue3项目

至此,docker打包vue项目全部完成

四 上传docker仓库

有些情况下,项目并非是直接在服务器上打包镜像的,或者说可能需要我们把自己打包后的镜像发给其他人用,这里就需要将自己打包的镜像上传到docker仓库了,也就是docker hub,从目前的情况来看,docker hub在国内访问非常不稳定,最好能科学上网

需要完成这么几个步骤

注册docker账号–>创建docker hub仓库–>本地登录docker hub–>本地镜像关联docker hub仓库–>将打包的镜像推送到docker hub

  1. 注册docker账号需要科学上网

  2. 创建docker hub仓库,这里我创建了个名为test的仓库

image-20240530104543177

  1. 本地登录docker hub,我用的是vscode,vscode提供了一键登录docker的插件(其实我也没搞明白是怎么登录成功的)

image-20240530104825294

如果没有vscode,要通过命令行登录docker

docker login -u <用户名> -p <密码>

也可以分步来登录,先执行docker login,然后按要求输入用户名和密码

  1. 本地镜像关联docker hub仓库

    执行命令

    docker tag docker-vue huangg372/test
    

    就是将本地镜像关联到了docker hub上的test仓库

  2. 将镜像文件推送到仓库

    执行命令

    docker push huangg372/test
    

    执行一段时间后,仓库中就有了这个镜像了

    image-20240530110750977

上传完仓库后,如果是公有的镜像,那所有人都可以通过docker拉取这个镜像,在自己的服务器上运行了
这样就完成了vue项目的镜像制作,docker部署,以及仓库上传全部内容

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

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

相关文章

【Java数据结构】详解Stack与Queue(二)

&#x1f512;文章目录: 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.栈的应用场景 2.1逆序打印链表 2.2逆波兰表达式求值 2.3括号匹配 2.4出栈入栈次序匹配 2.5最小栈 3. 栈 虚拟机栈 栈帧的区别 4.总结 1.❤️❤️前言~&#x1f973…

1371. 每个元音包含偶数次的最长子字符串

1371. 每个元音包含偶数次的最长子字符串 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;_1371每个元音包含偶数次的最长子字符串 错误经验吸取 原题链接&#xff1a; 1371. 每个元音包含偶数次的最长子字符串 https://leetcode.cn/pro…

Qos基础

一、Qos概述 Qos是一个框架&#xff0c;解决服务质量&#xff0c;尽力而为模型&#xff0c;集成服务以及区分服务模型&#xff0c;流量分类与标识。 使用Qos是带宽不够。 每个接口有硬件队列和软件队列&#xff08;队列排满了就不会再排&#xff09;。 企业宽带一般都是上行和下…

使用 Scapy 库编写 ICMP 重定向攻击脚本

一、介绍 ICMP重定向攻击&#xff08;ICMP Redirect Attack&#xff09;是一种网络攻击&#xff0c;攻击者通过发送伪造的ICMP重定向消息&#xff0c;诱使目标主机更新其路由表&#xff0c;以便将数据包发送到攻击者控制的路由器或其他不可信任的设备上。该攻击利用了ICMP协议…

【三维重建NeRF(三)】Mip-NeRF论文解读

本文结合深蓝学院课程学习和本人的理解&#xff0c;欢迎交流指正 文章目录 Mip-NeRF流程简述混叠问题与MipMapMip-NeRF提出的解决办法圆锥台近似计算与集成位置编码(IPE) Mip-NeRF流程简述 Mip-NeRF的大体流程和NeRF基本是一样的&#xff0c;NeRF介绍 创新的部分就是针对NeRF…

定格动态:如何用前端实现视频帧截图

在这样一个图像化极其重要的时代&#xff0c;从视频中提取精彩瞬间&#xff0c;即视频帧截图的技术&#xff0c;已成为前端开发中的一个亮点。JavaScript作为网页动态效果和交互的主力军&#xff0c;其在视频处理领域能力逐渐被挖掘和重视&#xff0c;尤其是视频帧截图技术的应…

GaN功率电子器件中体缺陷相关机制的建模仿真研究

在电力电子器件的外延生长和器件制备过程中&#xff0c;缺陷是不可避免的&#xff0c;大量的缺陷在一定程度上会牺牲器件的击穿电压、导通电阻等性能&#xff0c;同时影响器件的可靠性。近期&#xff0c;河北工业大学和广东工业大学联合开发了缺陷相关的仿真模型&#xff0c;深…

gitblit 环境搭建,服务器迁移记录

下载 Gitblit&#xff1a; http://www.gitblit.com/ JDK&#xff1a;gitblit网站显示需要jdk1.7&#xff0c;这里用的1.8。 Git&#xff1a;到官网下载最新版本安装 1). 分别安装JDK&#xff0c;Git&#xff0c;配置环境变量&#xff0c;下载并解压Gitblit 2). 创建代码仓库 …

每日一题《leetcode--LCR 029.循环有序列表的插入》

https://leetcode.cn/problems/4ueAj6/ 这道题整体上想插入数据有三种情况&#xff1a; 1、整个列表是空列表&#xff0c;需要返回插入的结点 2、整个列表只有一个结点&#xff0c;需要在头结点后插入新结点&#xff0c;随机把新结点的next指向头结点 3、整个列表的结点 >1 …

052、Python 集合及其使用

集合&#xff08;Set&#xff09;是一种无序且元素唯一的数据结构&#xff0c;用于存储不重复的元素&#xff08;即集合具有无序性和互异性两个重要特性&#xff09;。集合可以用于执行集合操作&#xff0c;如并集、交集、差集等。 定义集合 可以使用大括号 {} 或者 set() 函…

供应MT7662TUN/C进口芯片现货

长期供应各品牌进口芯片现货&#xff1a; MT7662TUN/C DLPC4421A DLPC4422A DAD2000 IT6634 DDP4421-HV PMD1000 SiHA120N60E AM8280 AM90N06-03B P15F60HP2 MSD6A838UYGN-8-003D 5AGXBA5D4F31C5G MCZ5209SN STM32L431CCT6 PT2833 ES858 TPS74301RGWR CSD18…

Rust自动生成文件解析

目录 一、生成目录解析二、生成文件解析2.1 Cargo.toml2.2 main函数解析 一、生成目录解析 先使用cargo clean命令删除所有生成的文件&#xff0c;下图显示了目录结构和 main.rs文件 使用cargo new testrust时自动创建出名为testrust的Rust项目。内部主要包含一个src的源码文…

IP地址SSL证书申请流程与注意事项

申请IP地址SSL证书的过程相对直接&#xff0c;但涉及几个关键步骤和注意事项。以下是基于现有信息整理的申请流程及注意事项概览&#xff1a; 一、IP地址SSL证书申请流程&#xff1a; PC点此申请&#xff1a;IP SSL证书申请-极速签发 注册填写注册码230918&#xff08;填写注…

DeepFace ——用于高级人脸识别算法探索与应用

1. 概述 人脸识别作为人工智能和机器学习中的一个活跃领域&#xff0c;长期以来一直在追求模仿甚至超越人类视觉系统的能力。这项技术在安全、监控、身份验证等多个方面都有着广泛的应用&#xff0c;但同时也伴随着隐私、伦理和准确性等社会和文化方面的考量。 Meta&#xff0…

fly-barrage 前端弹幕库(6):实现人像免遮挡

项目官网地址&#xff1a;https://fly-barrage.netlify.app/&#xff1b; &#x1f451;&#x1f40b;&#x1f389;如果感觉项目还不错的话&#xff0c;还请点下 star &#x1f31f;&#x1f31f;&#x1f31f;。 Gitee&#xff1a;https://gitee.com/fei_fei27/fly-barrage&a…

【matlab】绘图插入并放大/缩小子图

参考链接 代码分为两个&#xff1a;绘图代码与magnify.m 绘图代码就是普通的绘图代码&#xff0c;以下为例 %https://zhuanlan.zhihu.com/p/655767542 clc clear close all x 0:pi/100:2*pi; y1 sin(x); plot(x,y1,r-o); hold on y2sin(x)-0.05; y3sin(x)0.05; xlim([0 2*…

ai写真软件有哪些?轻松创造艺术写真照

艺术写真照是艺术与日常之间的桥梁&#xff0c;它将艺术的边界延伸到了我们的日常生活中&#xff0c;让每个人都能够通过AI技术&#xff0c;将平凡的瞬间转化为艺术的永恒。 那AI写真怎么样呢&#xff1f;今天&#xff0c;本文将推荐几款AI写真软件&#xff0c;它们将帮助你轻…

CXL (1)

为什么有CXL CXL说到底 是为了打破内存墙而生的 CXL全称是Compute Express Link&#xff0c; 可以用来连接CPU&#xff0c;以及其他任何计算单元&#xff0c;比如GPU。 CXL和PCIe跑在一样的physical layer上&#xff0c;与PCIe不一样的是&#xff0c;CXL允许CPU和连接的设备共…

csrf漏洞与ssrf漏洞

环境&#xff1a;用kali搭建的pikachu靶场 一.CSRF 1.CSRF漏洞简介 跨站请求伪造&#xff08;CSRF&#xff09;漏洞是一种Web应用程序安全漏洞&#xff0c;攻击者通过伪装成受信任用户的请求来执行未经授权的操作。这可能导致用户在不知情的情况下执行某些敏感操作&#xff0…

21、matlab生成脉冲序列:pulstran()函数

1、pulstran()函数 1&#xff09;语法 语法1&#xff1a;y pulstran(t,d,func,fs) 基于连续函数的采样产生脉冲序列。 语法2&#xff1a;y pulstran(t,d,p) 生成一个脉冲序列&#xff0c;该脉冲序列是向量p中原型脉冲的多个延迟插值的总和。 语法3&#xff1a;y pulstran…