疯狂的狮子li
2021-07-06 80e74eb91c08fc1d774d1274323546d5ce592455
add 增加 docker 编排 与 shell 脚本
已添加2个文件
178 ■■■■■ 文件已修改
docker/deploy.sh 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker/docker-compose.yml 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
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