花十分钟将vue3前端项目一步一步自动化部署到linux的docker上

简介: 可以理解成镜像是 Docker 生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。

image.png


大家好,我是 那个曾经的少年回来了。10年前我也曾经年轻过,如今已步入被淘汰的年龄,但如下幡然醒悟,所以活在当下,每天努力一点点,来看看2024年的时候自己会是什么样子吧,2024年的前端又会是什么样子,而2024年的中国乃至全球又会变成什么样子,如果你也有想法,那还不赶紧行动起来。期待是美好的,但是更重要的是要为美好而为之奋斗,付诸于行动。


上一篇文章自己尝试了,一步一步的部署到linux的nginx上,一鼓作气再来尝试一下如何将自己的前端项目部署到docker。


上一篇文章链接juejin.cn/post/713337…


1、理解一下docker


docker 中的几个概念


  • Repository: 仓库就是是集中存放镜像文件的场所,有点类似于github。


  • Image:镜像,用来创建容器。


  • Container: 容器,是一个可运行的镜像实例。


  • Dockerfile: 镜像构建的模版,描述镜像构建的步骤。


再来形象的理解一下docker


  • Docker可以帮助我们来构建和部署容器,我们只需要将自己的应用程序或者服务打包放进容器即可。


  • 容器是基于镜像启动起来的,容器中可以运行一个或多个进程。


  • 可以理解成镜像是 Docker 生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。


  • 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。


2、linux上安装docker


//安装docker
sudo zypper in docker (yum)
//查看docker版本
docker -v


3、设置docker开机启动


// 配置让docker服务岁系统自动启动
systemctl enable docker.service
// 启动docker守护进程
systemctl start docker.service
// 取消开机自动启动
systemctl disable docker.service
// 停止docker服务
systemctl stop docker.service
// 查看nginx服务的状态
systemctl status docker.service
// 重启docker服务
systemctl restart docker.service


4、修改docker镜像源


vim /etc/docker/daemon.json
// 如果权限不够可以要加上sudo
sudo vim /etc/docker/daemon.json


然后再daemon.json中添加


"registry-mirrors" : [
  "https://registry.docker-cn.com",
  "https://docker.mirrors.ustc.edu.cn",
  "http://hub-mirror.c.163.com",
  "https://cr.console.aliyun.com"
]


5、拉取镜像


//查看下载的镜像
docker images
// docker中拉去nginx镜像
docker pull nginx
// 查看nginx镜像 (IMAGE ID)
docker images nginx


6、启动一个容器


//测试nginx镜像是否可用
docker run -d --name mynginx -p 80:80 605c


  • -d   指定容器以守护进程方式在后台运行


  • --name 指定容器名称,此处我指定的是mynginx


  • -p  指定主机与容器内部的端口号映射关系,格式 -p  [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口


  • 605c 是nginx的镜像IMAGE ID前4位


执行上面的docker run后生成一串字符串(容器ID)说明执行成功


ecs-78441:/etc/docker # docker run -d --name mynginx -p 80:80 605c ddc72b6047dba505f24559d181c99043be50eaa6a383549b7c0fe147266fb0b2


测试nginx镜像通过浏览器进行访问(端口要记得做映射)上面我设置的端口是80


7、开始部署自己的项目


7.1、开始将自己的vue前端项目打包到dist目录


pnpm build


7.2、在本地创建一个Dockerfile


FROM nginx:latest
# 将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下
COPY dist/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf


7.3、同样在本地创建一个default.conf(nginx配置文件)


server {
    listen 80;
    root /usr/share/nginx/html;
    index index.html index.htm;
    if ($request_method = 'OPTIONS') {
        return 204;
    }
    location / {
      try_files $uri $uri/ = 404;
    }
}


7.4、将打包后的文件dist文件夹和Dockerfile以及default.conf上传到linux服务器


image.png


我这里是通过filezilla上传和查看的


7.5、在服务器上cd到指定目录


这个目录便是我上传dist和Dockerfile以及default.conf的目录,在命令行中执行


cd  /usr/local/aehyok/docker


7.6、开始通过Dockerfile创建镜像(admin指的是镜像的名字)


在这个目录直接运行以下命令,就开始根据Dockerfile文件开始构建镜像


docker build -t admin .
// 应该会提示Successfully tagged admin:latest
// 说明创建成功了


7.7、查看刚刚创建的镜像(找到admin镜像的IMAGE ID的前四位)


docker images 


7.8、通过镜像创建一个新的容器并运行容器


docker run -d -p 80:80 --name myreact ba04


7.9、查看容器


//列出容器
docker ps
// 列出所有容器(包括未运行的容器) 
docker ps -a
// 开启容器 (container id)
docker start dsfsdfas
docker stop dfdssdf


7.10、通过浏览器进行访问地址即可,完美结束


curl http://xx.xxx.xxx:80 


如果可以查看到下载的html


image.png

image.png


便可以直接通过浏览器进行访问


8、总结


不用靠后端也可以自己部署自己的项目,自己实际操作下来也没什么难度,加油继续折腾吧。


我的个人博客:vue.tuokecat.com/blog


我的个人github:github.com/aehyok


我的前端项目:pnpm + monorepo + qiankun + vue3 + vite3 + 工具库、组件库 + 工程化 + 自动化


不断完善中,整体框架都有了


在线预览:vue.tuokecat.com


github源码:github.com/aehyok/vue-…

目录
相关文章
|
2月前
|
存储 JavaScript 前端开发
前端技术分享:使用Vue.js与Vuex管理状态
【10月更文挑战第1天】前端技术分享:使用Vue.js与Vuex管理状态
54 6
|
28天前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
104 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
22天前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
43 9
|
29天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
2月前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
84 41
|
2月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
147 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
1月前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
27 1
|
1月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
39 2
|
2月前
|
JavaScript 前端开发 API
Vue.js:打造高效前端应用的最佳选择
【10月更文挑战第9天】Vue.js:打造高效前端应用的最佳选择
25 2
|
2月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。