怎么通过portainer部署一个vue项目
这篇文章分享一下今天通过docker打包vue项目,并使用打包的镜像在portainer上部署运行,参考了vue-cli和docker的官方文档。
首先,阅读vue-cli关于docker部署的说明
vue-cli关于docker部署的说明https://cli.vuejs.org/guide/deployment.html#docker-nginx
部署前端项目需要依赖http服务器,比如tomcat、apache、nginx等,根据提供的Dockerfile的de文件内容,博主通过实践总结出了以下几个步骤:
第一步、通过git拉取vue
项目ttsx
在ubuntu的任意目录下执行以下命令拉取git项目的代码,建议在根目录下。
git clone https://gitee.com/he-yunlin/ttsx.git
第二步、安装npm工具
安装node.js或者npm都可以
apt install npm
第三步:下载node.js镜像
docker pull node:14.16.0
第四步、下载nginx镜像
docker pull nginx
第五步、下载项目依赖并编译
进入项目的根目录下
cd /ttsx
下载项目依赖
npm install
编译项目
npm run build
编译完成后,生成了一个dist目录
第六步、编写Dockerfile
文件
在ttsx项目的根目录下创建一个Dockerfile文件,文件内容如下:
FROM node:14.16.0 as build-stage
WORKDIR /app
COPY package*.json ./
COPY ./ .
FROM nginx as production-stage
RUN mkdir /app/
COPY --from=build-stage /app/dist /app
COPY nginx.conf /etc/nginx/nginx.conf
这个Dockerfile文件做了以下几件事:
- 基于node.js构建一个docker容器A,在这个容器内部创建工作目录/app
- 把项目ttsx的根目录下的文件
复制到容器内部工作目录/app下
- 基于nginx构建一个容器B,在这个容器内部创建工作目录/app
- 把容器A的/app/dist目录下的文件复制到容器B的/app目录下
- 把项目ttsx根目录下的nginx.conf复制为容器B的/etc/nginx/nginx.conf文件
第七步、在项目根目录下创建 .dockerignore
文件
.dockerignore
文件配置在Dockerfile中执行COPY命令时忽略的文件,比如COPY ./ .
这条命令会把当前项目根目录下的所有文件都复制到docker容器内部。注意:上面的Dockerfile会从容器A中复制/app/dist,所以这里不能忽略/dist,否则就找不到了,镜像会构建失败。因为nginx.conf并没有从容器A中复制,所以不需要COPY到容器A里,因此也可以把nginx.conf忽略。
**/node_modules
README.md
.gitignore
.dockerignore
Dockerfile
.idea
nginx.conf
第八步、构建ttsx
的镜像
docker build . -t ttsx-20231003hyl
第九步、在portainer上部署
在portainer中添加一个应用程序栈stack,填写docker-compose.yml
version: "3"
services:ttsx:container_name: ttsximage: ttsx-20231003hylports:- 8088:8088
填写完成后页面下拉,找到并点击Depoly the stack按钮。
相关文章:
怎么通过portainer部署一个vue项目
这篇文章分享一下今天通过docker打包vue项目,并使用打包的镜像在portainer上部署运行,参考了vue-cli和docker的官方文档。 首先,阅读vue-cli关于docker部署的说明 vue-cli关于docker部署的说明https://cli.vuejs.org/guide/deployment.html#…...
Springboot实现websocket(连接前jwt验证token)
背景 用户连接服务器weksocket前,需经过jwt的token验证(token中包含账号信息),验证合法后,才可以于服务器正常交互。 实现 一、配置依赖(pom.xml) <!-- websocket --><dependency&g…...
2023/10/3
平荒尽处是春山 二零二三年的十月 似乎已经过去了很久很久 没有了曾经的意气风发 也没有了歌伴夜声 之前一直不知道自己为什么喜欢打篮球 虽然打得不好 但是今天突然明白了 我喜欢的不是过人后的喜悦 而是篮球应声入网的清脆的声音 当然 出来进球 还有的是擦筐而出和三不沾 但是…...
zemax场曲/畸变图与网格畸变图
网格畸变是XY两个方向上的几何畸变,是不同视场实际像高与近轴像高的偏差。 垂轴放大率在整个视场范围内不能保持常数 当一个有畸变的光学系统对一个方形的网状物体成像时,若δy>0,则主光线的交点高度y比理想像高y低,视场越大,低得越多&a…...
【小尘送书-第六期】《巧用ChatGPT轻松玩转新媒体运营》AI赋能运营全流程,帮你弯道超车、轻松攀登运营之巅
大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨💻博主主页:小尘要自信 …...
GD32F10 串口通信
1. 什么是通信 通信,指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递,从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法,任意媒质,将信息从某方准确安全地传送到另方。通信双方如果想正确传输…...
QT常用控件介绍
QT信号与槽机制 connect (A,SIGNLA(aaa()),B, SLOT(bbb())); GUI继承简介 布局管理器 垂直布局水平布局网格布局表单布局 输出控件 Label: 标签Text Browser: 文本浏览器Graphics View : 图形视图框架Calendar Widget: 日历控件LCD Number: 液晶字体数…...
[FineReport]安装与使用(连接Hive3.1.2)
一、安装(对应hive3.1.2) 注:服务器的和本地的要同时安装。本地是测试环境,服务器的是生产环境 1、服务器安装 1、下载 免费下载FineReport - FineReport报表官网 向下滑找到 2、解压 [rootck1 /home/data_warehouse/software]# tar -zxvf tomcat…...
黑马mysql教程笔记(mysql8教程)基础篇——数据库相关概念、mysql安装及卸载、数据模型、SQL通用语法及分类(DDL、DML、DQL、DCL)
参考文章1:https://www.bilibili.com/video/BV1Kr4y1i7ru/ 参考文章2:https://dhc.pythonanywhere.com/article/public/1/ 文章目录 基础篇数据库相关概念(数据库DataBase(DB)、数据库管理系统DataBase Management Sy…...
最新AI智能创作系统源码V2.6.2/AI绘画系统/支持GPT联网提问/支持Prompt应用
一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…...
神器 CodeWhisperer
这两天看到了好多关于 Amazon CodeWhisperer 针对个人用户终身免费使用的消息,便抽空简单来重点介绍下如何在 VS Code 这款 IDE 上安装和使用 CodeWhisperer。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视…...
GraphQL全面深度讲解
目录 一、GraphQL 是什么 二、GraphQL 规范 数据模型 字段 参数 三、运行示例 四、优势和劣势 优势 劣势 一、GraphQL 是什么 GraphQL 是一种用于 API 的查询语言,也是一个基于服务端的运行引擎。 GraphQL 提供了一套完整的规范和描述用于查询 API…...
9.1 链表
链表:数据结构,一堆数据的集合,链表的每一项都是结构体,都使用指针指向下一个结构体。 数组的缺点:由于数组的地址是连续的,对数组的数据进行增、删、改后数据不连续,需要较大的运算量才能实现…...
分布式文件系统FastDFS实战
1. 分布式文件系统应用场景 互联网海量非结构化数据的存储需求: 电商网站:海量商品图片视频网站:海量视频文件网盘:海量文件社交网站:海量图片 2.FastDFS介绍 https://github.com/happyfish100/fastdfs 2.1简介 …...
手机自动直播系统源码交付与代理加盟注意事项解析!
随着直播行业的不断发展,手机自动直播已经成为了人们生活中不可或缺的一部分。手机无人直播软件成了香饽饽,各类手机实景直播APP大批量涌现。因为创业和技术门槛低,市场需求高,所以成了最火热创业赛道。那么如果是不懂技术的人群&…...
NodeJS 如何连接 MongoDB
初始化: yarn init使用命令: yarn add mongodb新建 index.js 文件: const MongoClient require(mongodb).MongoClient; const db_name "fly_articleDb"; const url mongodb://127.0.0.1:27017;(async function () {const cli…...
基于Java的老年人体检管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...
燃气安全如何保障?万宾燃气管网监测系统时刻感知管网运行态势
近年来随着我国城镇化建设的加快,燃气已经成为每个家庭的必需品。然而,每年夏季频繁发生的燃气爆炸事故,已经严重危害人民生命财产安全危害社会公共安全和公共利益。为了保障燃气安全运行,近日,许多城市都在大力推进燃…...
2. selenium学习
Selenium 学习 简介 Selenium 是一个用于自动化浏览器的工具,它提供了多种编程语言的支持,包括 Python、Java、C# 等。它可以模拟用户在浏览器中的操作,比如点击按钮、填写表单、提交数据等。Selenium 具有强大的功能和灵活的定制性&#x…...
数学建模Matlab之评价类方法
大部分方法来自于http://t.csdnimg.cn/P5zOD 层次分析法 层次分析法(Analytic Hierarchy Process, AHP)是一种结构决策的定量方法,主要用于处理复杂问题的决策分析。它将问题分解为目标、准则和方案等不同层次,通过成对比较和计算…...
json能够存储图片吗?
JSON 本身并不适合存储图片,因为它是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。JSON 数据格式简单,只包含键值对,因此它主要用于存储和传输文本数据。 然而,你可以将图片转换为 …...
C语言中自定义类型讲解
前言:C语言中拥有三种自定义类型,这三种自定义类型是怎么运用呢?在内存中又是怎么存储的呢?通过这篇文章我们来逐个讲解讲解。 三种类型分别是: 1.结构体 – 通俗的来讲就是可以把不同类型的变量放在一个集合中 2.枚举…...
Win10系统中GPU深度学习环境配置记录
运行环境 系统:Win10 处理器 Intel(R) Core(TM) i7-9700K CPU 3.60GHz 3.60 GHz 机带 RAM 16.0 GB 设备 ID A18D4ED3-8CA1-4DC6-A6EF-04A33043A5EF 产品 ID 00342-35285-64508-AAOEM 系统类型 64 位操作系统, 基于 x64 的处理器 显卡:NVIDIA GeF…...
pycharm一直没显示运行步骤,只是出现waiting for process detach
pycharm一直没显示运行步骤,只是出现waiting for process detach;各类音乐免费软件;最棒的下载torch-geometric-CSDN博客(不太推荐)我强烈推荐这个:_waiting for process detachhttps://blog.csdn.net/weix…...
管道读写特点以及设置成非阻塞
管道的读写特点: 使用管道时,需要注意以下几种特殊的情况(假设都是阻塞I/O操作) 1.所有的指向管道写端的文件描述符都关闭了(管道写端引用计数为0),有进程从管道的读端 读数据,那么管…...
(c++)类和对象 下篇
目录 1.再次了解构造函数 2. Static成员 3. 友元 4. 内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 1.再次了解构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { pub…...
Tomcat报404问题的原因分析
1.未配置环境变量 按照需求重新配置即可。 2.IIs访问权限问题 注意:这个问题有的博主也写了,但是这个问题可有可无,意思是正常情况下,有没有都是可以访问滴放心 3.端口占用问题 端口占用可能会出现这个问题,因为tomcat的默认端口号是8080,如果在是运行tomcat时计算机的…...
《发现的乐趣》作者费曼(读书笔记)
目录 一、书简介 二、作者理查德•费曼 费曼式思维 教育与传承 三、个人思考 四、笔记 科学家眼中的花之美 关于偏科 父亲教育我的方式 知道一个概念和真正懂得这个概念有很大区别 我没有义务去成全别人对我的期望 诺贝尔奖——够格吗? 探究世界的游戏规…...
第5章-宏观业务分析方法-5.3-主成分分析法
目录 5.3.1 主成分分析简介 协方差矩阵 方差 协方差 协方差矩阵...
IDEA 使用
目录 Git.gitignore 不上传取消idea自动 add file to git撤销commit的内容本地已经有一个开发完成的项目,这个时候想要上传到仓库中 Git .gitignore 不上传 在项目根目录下创建 .gitignore 文件夹,并添加内容: .gitignore取消idea自动 add…...
云南 网站建设网站/百度收录规则
某条消息发布后,距离当前时间多久的时间显示 1 //显示发布时间的函数2 function pastTime(_createTime) {3 //var createTime _createTime.substr(0, _createTime.lastIndexOf(" ")) //不能包含毫秒,如果有毫秒,进行截取4 …...
13个实用平面设计网站/怎么注册一个网站
Python实现四边形检测和矫正操作 在图像处理中,四边形检测和矫正是一项重要的任务。本文将介绍如何使用Python实现对图像中四边形的检测和矫正。 首先,我们需要使用Python的OpenCV库来进行图像处理。通过使用OpenCV,我们可以很方便地对图像进行操作。 接下来,我们需要定…...
南昌企业建站/seo课程培训
题面 \(Solution:\) 一开始想的是先跑一遍最短路,然后拆点之后再跑一遍,比较两次dis,然后发现拆点后会有负环(可能是我没想对拆点的方法),于是就放弃了拆点法。 我们考虑强制让每头牛选择走一条最短的,有草堆的路径&am…...
与狗做网站/企业微信管理系统
Windows下如何使用CMD命令打开进入MySQL数据库?1.打开【开始】》【运行】输入【cmd】单击【确定】后出现CMD命令黑色窗口,这就是我们说的CMD命令行,或者使用快捷键Windows键(在键盘上有个Windows标志的按键)R输入cmd后回车。2.在CMD命令窗口敲入命令mys…...
服装定制属于什么行业/广州seo网络推广员
题目1: 查找最晚入职员工的所有信息 CREATE TABLE ‘employees’ ( ‘emp_no’ int(11) NOT NULL, ‘birth_date’ date NOT NULL, ‘first_name’ varchar(14) NOT NULL, ‘last_name’ varchar(16) NOT NULL, ‘gender’ char(1) NOT NULL, ‘hire_date’ date N…...
做蛋糕网站的 实训报告图/营销推广的工具有哪些
memcached安装存档日期:2019年5月15日 | 首次出版:2009年9月15日 在由两部分组成的关于Memcached和Grails的上半部分的前半部分中,作者James Goodwill向您介绍了开源缓存解决方案memcached。 本文涵盖的主题包括安装,配置&#x…...