之前分享过一期前后端分离项目,观看的人比较多。回顾: 实战:权限系统是如何设计的(附源码)

实战:权限系统是如何设计的(附源码)

后台有不少小伙伴给我留言说想学习视频中是如何在 Docker 中部署前后端分离的项目,我抽空录制了这一期视频。视频内容主要是一步一步详细的教学从 0 到 1 的过程。

Docker上部署前后端分离项目视频地址:https://www.bilibili.com/video/BV1kV411s7N2

女朋友问我:怎么在Docker上部署前后端分离项目?(附源码)

以下是部署中使用到的笔记。最后做视频不易,希望点赞转发支持,你的点赞对我很重要。我是阿壮,一个喜欢通过视频形式分享知识的程序员,微信搜一搜: 科技猫,获取第一时间更新,我们下期间

部署笔记

拉取项目

权限系统前端项目地址:https://github.com/jonssonyan/authority-ui

权限系统后端项目地址: https://github.com/jonssonyan/authority

通过 git 把前后端源码拉去到本地

打包项目

前端使用npm run build打包,最终打包好的文件夹在 dist 文件夹下,后端可以通过 Maven 打包。

上传至服务器

在根目录新建 myDate 文件夹,里面存放上传的文件。

如图,authority.jar 是后端 jar 包,dist 是前端文件

安装 Docker

安装 yum-utils 软件包(提供 yum-config-manager 实用程序)

yum install -y yum-utils

设置稳定的存储库(使用阿里云镜像)

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新缓存

yum makecache fast

安装最新版本的 Docker Engine 和容器,或转到下一步以安装特定版本

yum install docker-ce docker-ce-cli containerd.io

启动 Docker

systemctl start docker

配置 Docker

Docker 默认的镜像源于国内而言是有些慢,所以可以配置一下国内的镜像源,提高一下 pull 速度

阿里云镜像服务参考:https://cr.console.aliyun.com/cn-shanghai/instances/mirrors

创建目录
mkdir -p /etc/docker
创建一个镜像配置文件
vi /etc/docker/daemon.json
配置文件中添加镜像
{
 "registry-mirrors":["http://hub-mirror.c.163.com"]
}

重新加载文件并重启 docker

systemctl daemon-reload // 重新加载文件
systemctl restart docker // 重启docker
systemctl enable docker // 开机自启

安装 MySQL

系统使用的是 MySQL 数据库,所以要在 Docker 中安装 MySQL

拉取 Mysql 5.7.31 镜像

docker pull mysql:5.7.31

运行 Mysql 5.7.31

docker run -d --name myMysql -p 9506:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.31

参数解析:

  • -d: 后台运行容器,并返回容器 ID
  • –name myMysql: 为容器指定一个名称
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -v: 绑定一个卷,容器的 /var/lib/mysql 映射到 主机的目录 /data/mysql
  • -e MYSQL_ROOT_PASSWORD=123456: 设置环境变量,密码设置为 123456
    mysql:5.7.31:使用镜像 mysql:5.7.31

打包后端并运行为容器

在 jar 包的同一级文件夹下新建 Dockerfile 文件,文件内容如下

FROM java:8
VOLUME /tmp
ADD authority.jar authority.jar
EXPOSE 8888
ENTRYPOINT ["java","-jar","/authority.jar"]

参数解释

  • from java:8 拉取一个 jdk 为 1.8 的 docker image
  • authority.jar 就是你上传的 jar 包,替换为 jar 包的名称
  • authority.jar 是你将该 jar 包重新命名为什么名称,在容器中运行
  • expose 该容器暴露的端口是多少,就是 jar 在容器中以多少端口运行
  • entrypoint 容器启动之后执行的命令,java -jar /authority.jar 即启动 jar

打包镜像

docker build -t authority .

运行容器

docker run -d -p 8888:8888 --name authority-8888 authority

打包前端并运行为容器

在前端文件夹 dist 的同一级文件夹下新建 Dockerfile 文件,文件内容如下

FROM nginx:latest
COPY ./dist /usr/share/nginx/html/
EXPOSE 80

打包镜像

docker build -t authority-ui .

运行容器

docker run -d -p 80:80 --name authority-ui-80 authority-ui

最终效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-36pLwMJP-1623863226954)(https://files.mdnice.com/user/10819/88f87bf7-b15e-495e-866d-a06ae1a88515.png)]

  • authority-ui–80 是前端容器
  • authority-8888 是后端容器
  • myMysql 是数据库容器

打开浏览器访问服务器 IP 即可看到效果

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐