嗨~大家好我是阿壮,一个程序员 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 // 重启dockersystemctl 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:8VOLUME /tmpADD authority.jar authority.jarEXPOSE 8888ENTRYPOINT ["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:latestCOPY ./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 即可看到成果