diff --git a/docker/deploy.sh b/docker/deploy.sh new file mode 100644 index 000000000..bbfdaf426 --- /dev/null +++ b/docker/deploy.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +#使用说明,用来提示输入参数 +usage() { + echo "Usage: sh 执行脚本.sh [port|mount|base|start|stop|stopall|rm|rmiNoneTag]" + exit 1 +} + +#开启所需端口 +port(){ + firewall-cmd --add-port=3306/tcp --permanent + firewall-cmd --add-port=6379/tcp --permanent + service firewalld restart +} + +##放置挂载文件 +mount(){ + #挂载配置文件 + if test ! -f "/docker/nginx/nginx.conf" ;then + mkdir -p /docker/nginx + cp nginx/nginx.conf /docker/nginx/nginx.conf + fi +} + +#启动基础模块 +base(){ + docker-compose up -d mysql nginx-web redis +} + +#启动程序模块 +start(){ + docker-compose up -d ruoyi-admin +} + +#停止程序模块 +stop(){ + docker-compose stop ruoyi-admin +} + +#关闭所有模块 +stopall(){ + docker-compose stop +} + +#删除所有模块 +rm(){ + docker-compose rm +} + +#删除Tag为空的镜像 +rmiNoneTag(){ + docker images|grep none|awk '{print $3}'|xargs docker rmi -f +} + +#根据输入参数,选择执行对应方法,不输入则执行使用说明 +case "$1" in +"port") + port +;; +"mount") + mount +;; +"base") + base +;; +"start") + modules +;; +"stop") + stopmodules +;; +"stopall") + stop +;; +"rm") + rm +;; +"rmiNoneTag") + rmiNoneTag +;; +*) + usage +;; +esac diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 000000000..0da303203 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,94 @@ +version: '3' + +services: + mysql: + image: mysql:8.0.24 + container_name: mysql + environment: + # 时区上海 + TZ: Asia/Shanghai + # root 密码 + MYSQL_ROOT_PASSWORD: root + # 初始化数据库(后续的初始化sql会在这个库执行) + MYSQL_DATABASE: ry-vue + ports: + - 3306:3306 + volumes: + # 数据挂载 + - /docker/mysql/data/:/var/lib/mysql/ + # 配置挂载 + - /docker/mysql/conf/:/etc/mysql/conf.d/ + # 初始化目录挂载 + - /docker/mysql/init/:/docker-entrypoint-initdb.d/ + command: + # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配) + --default-authentication-plugin=mysql_native_password + --character-set-server=utf8mb4 + --collation-server=utf8mb4_general_ci + --explicit_defaults_for_timestamp=true + --lower_case_table_names=1 + privileged: true + restart: always + networks: + ruoyi_net: + ipv4_address: 172.30.0.36 + + nginx-web: + # 如果需要指定版本 就把 latest 换成版本号 + image: nginx:latest + container_name: nginx-web + ports: + - 80:80 + - 443:443 + volumes: + # 证书映射 + - /docker/nginx/cert:/etc/nginx/cert + # 配置文件映射 + - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf + # 页面目录 + - /docker/nginx/html:/usr/share/nginx/html + # 日志目录 + - /docker/nginx/log:/var/log/nginx + # 主机本机时间文件映射 与本机时间同步 + - /etc/localtime:/etc/localtime:ro + privileged: true + restart: always + networks: + - ruoyi_net + + redis: + image: redis:6.0.9 + container_name: redis + ports: + - 6379:6379 + environment: + # 设置环境变量 时区上海 编码UTF-8 + TZ: Asia/Shanghai + LANG: en_US.UTF-8 + volumes: + # 配置文件 + - /docker/redis/conf/redis.conf:/redis.conf:rw + # 数据文件 + - /docker/redis/data:/data:rw + command: "redis-server --appendonly yes" + privileged: true + restart: always + networks: + ruoyi_net: + ipv4_address: 172.30.0.48 + + ruoyi-admin: + image: "${REGISTER}/ruoyi-admin:${TAG}" + environment: + - TZ=Asia/Shanghai + privileged: true + restart: always + networks: + - ruoyi_net + +networks: + ruoyi_net: + driver: bridge + ipam: + config: + - subnet: 172.30.0.0/16