1 Linux 安装 Docker
1.1 查看 Linux 内核版本(使用 root 权限登录 CentOS)
[root@iZgia1btkivmb2Z ~]# uname -r
3.10.0-957.21.3.el7.x86_64
[root@iZgia1btkivmb2Z ~]#
1.2 确保 yum 包更新到最新版本
[root@iZgia1btkivmb2Z ~]# yum -y update
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 GeoIP.x86_64.0.1.5.0-13.el7 将被 升级
---> 软件包 GeoIP.x86_64.0.1.5.0-14.el7 将被 更新
......
完毕!
[root@iZgia1btkivmb2Z ~]#
1.3 安装需要的软件包
[root@iZgia1btkivmb2Z ~]# yum install -y yum-utils
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
......
完毕!
[root@iZgia1btkivmb2Z ~]#
1.4 设置 yum 源并更新 yum 的包索引
[root@iZgia1btkivmb2Z ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@iZgia1btkivmb2Z ~]#
[root@iZgia1btkivmb2Z ~]# yum makecache fast
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
......
元数据缓存已建立
[root@iZgia1btkivmb2Z ~]#
1.5 查看仓库中所有 Docker 版本
[root@iZgia1btkivmb2Z ~]# yum list docker-ce --showduplicates | sort -r
已加载插件:fastestmirror
可安装的软件包
Loading mirror speeds from cached hostfile
docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable
[root@iZgia1btkivmb2Z ~]#
1.6 选择特定版本安装
[root@iZgia1btkivmb2Z ~]# yum install -y docker-ce-3:19.03.9-3.el7.x86_64
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 docker-ce.x86_64.3.19.03.9-3.el7 将被安装
......
完毕!
[root@iZgia1btkivmb2Z ~]#
1.7 启动 Dokcer
[root@iZgia1btkivmb2Z ~]# systemctl start docker
1.8 设置开机自启动
[root@iZgia1btkivmb2Z ~]# systemctl enable docker
1.9 查看版本信息
[root@iZgia1btkivmb2Z ~]# docker version
Client: Docker Engine - Community
Version: 20.10.16
API version: 1.40
Go version: go1.17.10
Git commit: aa7e414
Built: Thu May 12 09:19:45 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.9
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 9d988398e7
Built: Fri May 15 00:24:05 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.4
GitCommit: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
runc:
Version: 1.1.1
GitCommit: v1.1.1-0-g52de29d
docker-init:
Version: 0.18.0
GitCommit: fec3683
[root@iZgia1btkivmb2Z ~]#
2 配置 Docker 镜像加速器
2.1 登录阿里云获取镜像加速器地址
打开浏览器访问 https://cr.console.aliyun.com/#/accelerator,登录后开启容器镜像加速服务,然后获取镜像加速器地址。
2.2 编辑 / 新建 daemon.json 文件
[root@iZgia1btkivmb2Z ~]# cd /etc/docker
[root@iZgia1btkivmb2Z docker]# vim daemon.json
在 daemon.json 文件中添加镜像加速器地址后点击 Esc
键然后输入 :wq
保存并退出。
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
2.3 重启 Docker
[root@iZgia1btkivmb2Z docker]# systemctl daemon-reload
[root@iZgia1btkivmb2Z docker]# systemctl restart docker
3 安装 Docker-Compose
3.1 运行以下命令下载 Docker Compose (安装其他版本需要替换 v2.6.0)
[root@iZgia1btkivmb2Z docker]# sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3.2 为下载后的二进制文件添加可执行权限
[root@iZgia1btkivmb2Z docker]# chmod +x /usr/local/bin/docker-compose
3.3 创建软链接
[root@iZgia1btkivmb2Z docker]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
3.4 查看 Docker Compose 版本测试是否安装成功
[root@iZgia1btkivmb2Z docker]# docker-compose --version
Docker Compose version v2.6.0
4 部署前端
4.1 准备 Nginx 的挂载目录和配置
由于在 docker-compose.yml 中配置的宿主机挂载目录为
- /home/docker/zex-rpp/nginx/html
- /home/docker/zex-rpp/nginx/nginx.conf
所以首先递归创建 /home/docker/zex-rpp/nginx 目录,然后在 nginx 目录下创建 html 目录和 nginx.conf 配置文件。
[root@iZgia1btkivmb2Z ~]# mkdir -p /home/docker/zex-rpp/nginx
[root@iZgia1btkivmb2Z ~]# cd /home/docker/zex-rpp/nginx
[root@iZgia1btkivmb2Z nginx]# mkdir html
[root@iZgia1btkivmb2Z nginx]# touch nginx.conf
然后进入 nginx.conf 中编写如下配置
[root@iZgia1btkivmb2Z nginx]# vim nginx.conf
------------------------------------下面是配置---------------------------------
#user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html last;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
4.2 将前端代码上传到 Nginx 的 html 目录下
-
打包之前先修改前端调用后端的接口
-
axiosConfig.js
axios.defaults.baseURL = "http://服务器 IP 地址:8081"
-
-
运行 npm run build 打包得到 dist 文件夹
D:\AA-zex\zex-rpp\rpp-vue> npm run build
然后将 dist 文件夹下的所有文件通过 xftp 传输到 html 目录下
[root@iZgia1btkivmb2Z html]# ls css favicon.ico img index.html js
5 部署后端
5.1 打包后端代码
修改 application.yml 中数据库配置的 url,将 IP 地址修改为 mysql.
然后执行 maven 打包命令。
mvn clean package -Dmaven.test.skip=true
将 target
目录下生成的 rpp-java-0.0.1-SNAPSHOT.jar
文件传输至 Linux 中的 zex-rpp 目录下。
5.2 编写 Dockerfile
FROM java:8
EXPOSE 8081
ADD rpp-java-0.0.1-SNAPSHOT.jar zex-rpp.jar
ENTRYPOINT ["java", "-jar", "/zex-rpp.jar"]
将文件传输至 Linux 中的 zex-rpp 目录下。
5.3 编写 docker-compose.yml
version: "3"
services:
nginx:
image: nginx:latest
ports:
- 80:80
volumes:
- /home/docker/zex-rpp/nginx/html:/usr/share/nginx/html
- /home/docker/zex-rpp/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true
mysql:
image: mysql:latest
ports:
- 3306:3306
volumes:
- /home/docker/mysql/log:/var/log/mysql
- /home/docker/mysql/data:/var/lib/mysql
- /home/docker/mysql/conf:/etc/mysql/conf.d
environment:
- MYSQL_ROOT_PASSWORD=root
zex-rpp:
image: zex-rpp:latest
build: .
ports:
- 8081:8081
depends_on:
- mysql
将文件传输至 Linux 中的 zex-rpp 目录下。
5.4 编排部署
[root@iZgia1btkivmb2Z zex-rpp]# ll
total 50360
-rw-r--r-- 1 root root 458 Aug 22 09:50 docker-compose.yml
-rw-r--r-- 1 root root 160 Aug 19 16:10 Dockerfile
drwxr-xr-x 3 root root 4096 Aug 19 15:09 nginx
-rw-r--r-- 1 root root 51552412 Aug 19 16:10 rpp-java-0.0.1-SNAPSHOT.jar
执行编排命令
[root@iZgia1btkivmb2Z zex-rpp] docker-compose up -d
然后使用 Navicat 等工具建立数据库连接,创建数据库和数据表
最后在浏览器中输入服务器 IP 地址查看项目是否正常运行