Appearance
Docker方式部署
1. 安装docker
- 1.1 下载docker安装包
点击 docker.tar 下载 docker 安装,及相关配置文件
操作系统:推荐使用 CentOS
- 1.2 安装docker
把 docker.tar 文件包,放到服务器上(例如:/data/docker.tar),如图: 进入对应目录,使用命令解压:
cmd
tar -xvf docker.tar
安装: 进入docker目录(例如:/data/docker/),运行命令
cmd
# 进入你自己的目录
cd /data/docker
# 开始安装
./install_docker.sh
注意
安装过程中,会提示“请输入docker使用的网段,默认192.168.0.0/16,输入格式:xxx.xxx.xxx.xxx/xx”
如果当你对网络有特殊要求,可自行填写,要求是: 输入的网段,不能和本机所在局域网冲突;否则可能导致ssh远程不上或者导致局域网中其他应用和容器无法通信问题。
- 1.3 修改 docker-compose.yml
使用命令:
cmd
vi docker-compose.yml
根据下图文字说明,自行修改配置:
注意
数据库初始密码,是在安装mysql的docker时,设置root用户的默认密码
只有第一次安装时起作用,安装完,在修改这里的配置,就不起作用了。
Redis密码
默认密码:dashu@2023++
如需修改redis密码,见下图:
允许随时修改,修改完后,重启 redis 的 docker 容器,即可
- 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) 代表,防火墙已启动
- 开启防火墙
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 为例: 打包成功!
打包目录:module/target/package-jar/
- 3.3 部署 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 上下文,保持一致(如下图:)
cmd
# 进入web-vue2目录,使用以下命令打包
npm run build:prod
打包后的目录:
- 4.2 部署前端
- 拷贝文件
把打包好的项目文件,拷贝到服务器目录:
(目录/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
部署完成。
- 访问地址:http://[你的ip]
- 演示地址:http://yanshi.java119.cn/