嗨~大家好我是阿壮,一个程序员 UP,之前分享过一期前后端分离项目,观看的人比较多。回顾: 实战:权限系统是如何设计的(附源码)
后台有不少小伙伴给我留言说想学习视频中是如何在 Docker 中部署前后端分离的项目,我抽空录制了这一期视频。视频内容主要是一步一步详细的教学从 0 到 1 的过程。
Docker上部署前后端分离项目视频地址: https://www.bilibili.com/vide...
以下是部署中使用到的笔记。最后做视频不易,希望点赞转发支持,你的点赞对我很重要。我是阿壮,一个喜欢通过视频形式分享知识的程序员,微信搜一搜: 科技猫,获取第一时间更新,我们下期间
部署笔记
拉取项目
权限系统前端项目地址:https://github.com/jonssonyan...
权限系统后端项目地址: https://github.com/jonssonyan...
通过 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...
创建目录
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
最终效果
- authority-ui--80 是前端容器
- authority-8888 是后端容器
- myMysql 是数据库容器
打开浏览器访问服务器 IP 即可看到效果