阿里云服务器通过 Docker 部署前后端分离项目的详细流程

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 目录下
  1. 打包之前先修改前端调用后端的接口

    • axiosConfig.js

      axios.defaults.baseURL = "http://服务器 IP 地址:8081"
      
  2. 运行 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 地址查看项目是否正常运行

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Alan_Walker688/article/details/126462232