Docker部署前后端服务示例

使用Docker部署js前端

1.创建Dockerfile

在项目跟目录下创建Dockerfile文件:

# 使用nginx作为基础镜像
FROM nginx:1.19.1# 指定工作空间
WORKDIR /data/web# 将 yarn build 打包后的build文件夹添加到工作空间
ADD build build# 将项目必要文件添加到工作空间,这里我们把nginx配置文件维护在项目里,部署时直接移动配置文件,就不需要在去处理nginx配置了
COPY ./config/nginx.conf /etc/nginx/conf.d/default.conf# 暴露80端口
EXPOSE 80# 启动nginx,要用前台启动
ENTRYPOINT ["nginx", "-g", "daemon off;"]  

2.打包项目代码

假设使用yarn构建的前端

yarn build

3.打包镜像

打包最新镜像,镜像名为web,tag为latest

docker build -t web:latest . 

在这里插入图片描述
查看打包好的镜像

docker images 

在这里插入图片描述

4.启动容器

使用镜像web:latest启动容器,容器名称为my-web,端口映射到8000

docker run -d --name my-web -p 8000:80 web:latest

在这里插入图片描述

查看运行中的容器

docker ps

在这里插入图片描述

最后直接在浏览器打开 ip:8000,就可以看到web页面了

使用Docker部署后端

后端打包就更简单了,它不需要nginx环境,直接运行二进制文件就行

1.创建Dockerfile

在项目跟目录下创建Dockerfile文件:

# 使用centos作为基础镜像
FROM centos# 指定工作空间
WORKDIR /data/service# 将项目必要文件添加到工作空间
ADD config         config
ADD template       template# 将服务打包后的二进制文件添加到工作空间
ADD admin-api admin-api# 运行二进制文件启动服务
ENTRYPOINT ["./admin-api"]

2.打包镜像启动容器

除了dockerfile不一样,打包镜像和启动容器都是一样的

# 打包项目代码
go build# 打包镜像
docker build -t admin-api:latest . # 查看打包好的镜像
docker images # 使用镜像admin-api:latest启动容器,容器名称为admin-api,端口映射到8001
docker run -d --name admin-api -p 8001:80 admin-api:latest# 查看运行中的容器
docker ps

以上是docker的简单使用示例,在实际运用过程中,我们还可以把项目打包过程写进dockerfile,或结合ci让gitlab-runner来进行项目打包。打包出来的镜像,以版本号打个tag在镜像上用来区分不同版本的镜像,还可以将镜像上传到公司的镜像仓库。在部署时可以用更高阶的容器编排工具来实现高可用分布式部署。后面有会慢慢更新这些内容。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中汇编语言的学习(加法、乘法、除法、左移、右移、按位与等多种命令操作实例以及ARM的 N、Z、C、V 标志位的解释)

汇编概述 汇编需要学习的大致框架如下: 汇编中的符号 1.指令;能够北嘁肷梢惶?2bit机器码,并且能够被cpui识别和执行 2.伪指令:本身不是指令,编译器可以将其替换成若干条指令 3.伪操作:不会生成指令…

JAVA如何利用接口实现多继承问题

hello,上文带大家学习了java中类的继承,我们可以创建一个父类,将类中的共性抽取出来,通过子类继承的方式来实现代码的复用。今天带大家学习不同类之间的另外几种关系,即多态抽象类和接口。 多态的概念 多态&#xff0c…

TinyEMU编译与使用(一)

TinyEMU编译与使用(一) 1 介绍2 准备工作3 编译TinyEMU3.1 安装依赖库3.2 编译 4 运行TinyEMU4.1 在线运行4.2 离线运行 5 共享目录5.1 修改root_9p-riscv64.cfg5.2 启动TinyEMU5.3 执行挂载命令 6 TinyEMU命令帮助 1 介绍 原名为riscvemu,于…

可持久化数据结构

可持久化数据结构必须满足在操作过程中数据结构本身的拓扑结构不变,可以用来存下数据结构的所有历史版本。 核心思想:只记录每一个版本与前一个版本不一样的地方。 这里我们讨论两种数据结构的可持久化——trie和线段树。 Trie的可持久化 由于之前没…

02. Nginx入门-Nginx安装

Nginx安装 yum安装 编辑yum环境 cat > /etc/yum.repos.d/nginx.repo << EOF [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_…

PTA L2-009 抢红包

题目&#xff1a; 没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录&#xff0c;请你统计一下他们抢红包的收获。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤104&#xff09;&#xff0c;即参与发红包和抢红包的总人数&#xff0c;则…

L2-001 紧急救援(Java)

作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xff0c;你的任务是带领你的…

干货!带你快速了解Python元组

1.元组 元组一般用来存储多个数据&#xff0c;使用() 2.创建元组 创建空元组 tup1 () print(tup1) # () print(type(tup1)) # <class tuple> 创建非空元组&#xff08;元组中只有一个元素&#xff0c;一般要在元素的后面加 , 若不加 , 该数据类型不一定是元组…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项赛题第 3 套

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&…

AI时代的数据分析软件DeepBI与传统BI数据分析的差距

#BI智能数据分析工具# 目前AI在各行业的渗透正在改变我们的工作方式和生活方式&#xff0c;尤其是在智能数据分析领域。今天我们就来看一下新时代数据分析的产品DeepBI与传统BI之间的差距有多大。 BI在过去的二十年被错误定义数据可视化&#xff0c;根本原因在于&#xff0c;…

低代码工具APEX的入门使用(未包含安装)

第一次使用APEX是2019年&#xff0c;这个技术成名已久只是我了解的比较晚。请看Oracle ACE的网站&#xff0c;这就是用APEX做的。实际上有一次我看O记的人操作他们的办公流程&#xff0c;都是用APEX做的。 那一年&#xff0c;我用APEX做了一个CMDB的管理系统。那时候还没有流行…

网络工程师笔记7

路由器需要知道下一跳和出接口才能把数据转发出去 各个协议的优先级 直连&#xff1a;0 OSPF&#xff1a;10 ISIS&#xff1a;15 静态&#xff1a;60 RIP :100 静态路由 ip route-static <目的ip地址> 掩码 下一跳地址 例…