Skip to content

Docker方式部署

1. 安装docker

- 1.1 下载docker安装包

点击 docker.tar 下载 docker 安装,及相关配置文件
操作系统:推荐使用 CentOS

- 1.2 安装docker

把 docker.tar 文件包,放到服务器上(例如:/data/docker.tar),如图: Docker文件 进入对应目录,使用命令解压:

cmd
tar -xvf docker.tar

Docker解压缩

安装: 进入docker目录(例如:/data/docker/),运行命令

cmd
# 进入你自己的目录
cd /data/docker
# 开始安装
./install_docker.sh

Docker安装

注意

安装过程中,会提示“请输入docker使用的网段,默认192.168.0.0/16,输入格式:xxx.xxx.xxx.xxx/xx”

如果当你对网络有特殊要求,可自行填写,要求是: 输入的网段,不能和本机所在局域网冲突;否则可能导致ssh远程不上或者导致局域网中其他应用和容器无法通信问题。

- 1.3 修改 docker-compose.yml

dockerCompose 使用命令:

cmd
vi docker-compose.yml

根据下图文字说明,自行修改配置: dockerCompose修改

注意

数据库初始密码,是在安装mysql的docker时,设置root用户的默认密码
只有第一次安装时起作用,安装完,在修改这里的配置,就不起作用了。

Redis密码

默认密码:dashu@2023++
如需修改redis密码,见下图:
允许随时修改,修改完后,重启 redis 的 docker 容器,即可

RedisRedisConfig

- 1.4 启动docker

启动容器前,先修改 springboot 目录所属用户和组,容器中默认使用java用户和组运行,对应的宿主机用户和组ID为 1000:1000

cmd
chown -R 1000:1000 springboot

修改 maraidb 目录素数用户和组,容器中使用mysql用户和组运行,对应的宿主机用户和组ID 为999:999

cmd
chown -R 999:999 mysql
cmd
docker compose up -d

启动成功后,在浏览器访问 能访问到页面表示环境搭建成功

- 1.5 常用docker命令

  • 查看docker状态
cmd
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE                                                   COMMAND                     CREATED       STATUS          PORTS                        NAMES
55df4d2xddr2   registry.cn-beijing.aliyuncs.com/dashu_pub/openresty    "/usr/local/openrest…"      9 hours ago   Up 10 Seconds   0.0.0.0:80->80/tcp           openresty
287f8f62395e   registry.cn-beijing.aliyuncs.com/dashu_pub/springboot   "java -jar app.jar"         9 hours ago   Up 10 Seconds   0.0.0.0:8123->8123/tcp       springboot
9610c3acb3cf   mariadb:10.3                                            "docker-entrypoint.s…"      9 hours ago   Up 10 Seconds   0.0.0.0:13336->13306/tcp     mariadb
0766032e449e   redis:5                                                 "docker-entrypoint.s…"      9 hours ago   Up 10 Seconds   0.0.0.0:16379->6379/tcp      redis
  • 修改项目端口,可以修改 docker-compose.yml 文件,修改完成,运行命令:
cmd
docker compose down
docker compose up -d
  • 重启所有的容器
cmd
docker compose restart
  • 重启指定容器
cmd
docker compose restart 容器名

2. 修改防火墙配置

为了系统安全,需要配置防火墙。

注意

推荐的对外端口,只有 80
如果需要连接数据库,可开放 13306

  • 查看防火墙状态,firewalld
cmd
systemctl status firewalld

看到 active (runing) 代表,防火墙已启动 firewalld状态

  • 开启防火墙
cmd
systemctl start firewalld
  • 添加 80 端口(添加端口后,需要重启防火墙才生效)
cmd
firewall-cmd --permanent --add-port=80/tcp
  • 重启防火墙
cmd
firewall-cmd --reload
  • 查看防火墙已开放端口
cmd
firewall-cmd --list-ports
  • 删除防火墙端口,举例:80(删除端口后,需要重启防火墙才生效)
cmd
firewall-cmd --remove-port=80/tcp

3. 部署后端API

- 3.1 导入 mysql 数据库

点击下载 sql脚本 文件,自行导入到数据库

- 3.2 打包 springboot

以 IDEA 为例: springboot打包 打包成功! springboot打包成功 打包目录:module/target/package-jar/ springboot打包目录

- 3.3 部署 springboot

把打包好的文件,拷贝到项目路径 springboot拷贝

springboot配置文件

yml
# 1. 端口和上下文
server:
  port: 8123 # 注意:必须和 docker-compose.yml 中,(springboot容器,冒号后边)配置的端口一致
  servlet:
    #上下文
    context-path: /server # 注意:这里的配置,会影响到后面 openresty 配置(建议配置成 /server)
...

# 2. mysql 和 redis 配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    database:
      type: mysql
    url: jdbc:mysql://localhost:13306/db_dashu_frame_open?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: dashu@2023++
  #Redis配置
  redis:
    host: localhost
    port: 16379
    password: dashu@2023++
    database: 5
...

# 3. 文件上传的真实(由于项目在docker中部署,因此实际会上传到docker中,所以需要配置成,docker映射出来的地址)
#    可以配制成如下:
  #默认上传路径(文件保存的物理绝对路径;不要使用\)
  save-path: /usr/local/springboot/myupload/files
...

# 4. 关闭swagger
    #swagger相关配置
    swagger:
      enable: false

重启springboot容器

cmd
docker compose restart springboot

后端 API 部署完成。

4. 部署前端(包含配置api映射)

- 4.1 打包前端

打包前,配置项目对应的api路径(项目中$baseServer)

注意

这里的api路径,要和刚才配置的 springboot 上下文,保持一致(如下图:)

vue生成环境配置

cmd
# 进入web-vue2目录,使用以下命令打包
npm run build:prod

vue打包 打包后的目录:

- 4.2 部署前端

  • 拷贝文件

把打包好的项目文件,拷贝到服务器目录: vue拷贝到服务器

(目录/data/docker/openresty/conf/conf.d/default.conf)

TIP

如果你前面的配置端口、上下文等,都和文档中配置的一样的话,这里默认不需要修改任何东西

nginx
server
{
        listen          80;
        server_name     _;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 前端静态文件
        location / {
            root html;
            index index.html;
        }
        
        # 映射后端接口地址
        location /server/ {
            proxy_pass http://localhost:8123/server/;
        }
}

重启openresty容器

cmd
docker compose restart openresty

部署完成。