若依项目Docker容器化部署
·
若依项目Docker容器化部署
1、部署MySQL5.7容器
#>>> 拉取基础镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/hujiaming/mysql:5.7.44
#>>> 创建数据持久化目录
$ mkdir -p /opt/mysql/{data,logs,conf}
#>>> 准备MySQL配置文件
$ cat >> /opt/mysql/conf/my.cnf <<-EOF
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-time_zone = '+8:00'
# 新建数据库添加的配置信息
lower_case_table_names=1
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
max_connections=10000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid
symbolic-links=0
EOF
#>>> 创建MySQL容器
$ docker run \
-itd -p 3306:3306 \
--name dbservers --privileged=true \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/logs:/logs \
--restart=always \
-e MYSQL_ROOT_PASSWORD=Abc123, \
-e TZ=Asia/Shanghai \
registry.cn-hangzhou.aliyuncs.com/hujiaming/mysql:5.7.44
提升root权限:–privileged=true
设置时区:-e TZ=Asia/Shanghai
#>>> 进入MySQL容器
$ docker ps | grep mysql
eb9d2e235664 mysql:5.7.44 "docker-entrypoint.s…" 3 hours ago Up 3 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp dbservers
$ docker exec -it eb9d2e235664 bash
#>>> 进入MySQL(容器内操作)
bash-4.2# mysql -uroot -pAbc123,
#>>> 创建若依用户(容器内操作)
bash-4.2# GRANT ALL PRIVILEGES ON *.* TO 'ruoyi'@'%' IDENTIFIED BY 'Abc123456;' WITH GRANT OPTION;
#>>> 创建数据库(容器内操作)
bash-4.2# CREATE DATABASE ruoyi CHARACTER SET utf8mb4;
#>>> 刷新权限(容器内操作)
bash-4.2# flush privileges;
#>>> 下载源码
$ git clone https://gitee.com/y_project/RuoYi-Vue.git
#>>> 切换目录
$ cd /opt/RuoYi-Vue/sql/
#>>> 导入SQL文件
$ mysql -uruoyi -h192.168.174.101 -p'Abc123456;' ruoyi < ry_20240629.sql
$ mysql -uruoyi -h192.168.174.101 -p'Abc123456;' ruoyi < quartz.sql
2、部署Redis容器
#>>> 拉取基础镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/hujiaming/redis:6.0
#>>> 创建持久化目录
$ mkdir -p /opt/redis/{conf,data}
#>>> 准备redis配置文件(此配置文件仅用于测试,生产环境误用)
$ cat >> /opt/redis/conf/redis.conf <<-EOF
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
requirepass 123456
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
EOF
#>>> 运行redis容器
$ docker run --name redis \
-p 6379:6379 \
-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /opt/redis/data:/data \
-d --restart=always registry.cn-hangzhou.aliyuncs.com/hujiaming/redis:6.0 redis-server /etc/redis/redis.conf
#>>> 进入redis容器中
$ docker exec -it redis bash
#>>> 测试redis可用性
root@d3240161b809:/data# redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG
3、docker network
#>>> 创建docker network
$ docker network create ruoyinet
#>>> 查看网络
$ docker network ls | grep ruoyi
c5b87e546203 ruoyinet bridge local
#>>> 将MySQL Redis加入自定义网络中
$ docker network connect ruoyinet redis
$ docker network connect ruoyinet dbservers
#>>> 拉取测试容器
$ docker pull busybox
#>>> 启动测试容器
$ docker run -itd --name busybox busybox
#>>> 将测试容器加入自定义docker network
$ docker network connect ruoyinet busybox
#>>> 测试服务之间连通性
$ docker exec -it busybox ping dbservers
PING dbservers (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.671 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.123 ms
$ docker exec -it busybox ping redis
PING redis (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.495 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.226 ms
4、前端项目构建(请先启动后端容器后再执行此操作)
#>>> 切换目录
$ cd /opt/RuoYi-Vue/
#>>> 准备nginx配置文件
$ vim default.conf
server {
listen 80;
server_name localhost;
location / {
root /app;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ruoyi-admin:8080/;
}
}
#>>> 编写前端Dockerfile
$ vim Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/hujiaming/node:16.15.0 AS builder
COPY ./ /app
WORKDIR /app/ruoyi-ui
RUN npm install && npm run build:prod
FROM registry.cn-hangzhou.aliyuncs.com/hujiaming/nginx:1.24.0-alpine
RUN mkdir /app
COPY --from=builder /app/ruoyi-ui/dist /app
COPY default.conf /etc/nginx/conf.d/default.conf
#>>> 构建镜像
$ docker build -t ruoyi-ui:v1.0 .
#>>> 运行前端
$ docker run -itd --name ruoyi-ui --restart=always -p 80:80 --network ruoyinet ruoyi-ui:v1.0
5、后端容器容器化部署
#>>> 切换目录
$ cd /opt/RuoYi-Vue
#>>> 修改redis连接地址池
$ vim ruoyi-admin/src/main/resources/application.yml

#>>> 修改MySQL连接地址池
$ vim ruoyi-admin/src/main/resources/application-druid.yml

#>>> 编写Dockerfile
$ vim Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/hujiaming/maven:3.9.6 AS builder
COPY ./ /app
WORKDIR /app
RUN mvn install && cd ruoyi-admin && mvn clean package
FROM registry.cn-hangzhou.aliyuncs.com/hujiaming/openjdk:11.0.11-9-jre
COPY --from=builder /app/ruoyi-admin/target/ruoyi-admin.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
#>>> 构建镜像
$ docker build -t ruoyi-admin:v1.0 .
#>>> 启动后端容器
$ docker run \
-itd --name ruoyi-admin \
-p 8080:8080 \
--restart=always \
--network ruoyinet \
ruoyi-admin:v1.0
#>>> 查看启动日志
$ docker logs -f ruoyi-admin
et/ruoyi-admin.jar /app.jar
ENTRYPOINT [“java”, “-jar”, “/app.jar”]
#>>> 构建镜像
$ docker build -t ruoyi-admin:v1.0 .
#>>> 启动后端容器
$ docker run
-itd --name ruoyi-admin
-p 8080:8080
–restart=always
–network ruoyinet
ruoyi-admin:v1.0
#>>> 查看启动日志
$ docker logs -f ruoyi-admin

更多推荐
所有评论(0)