【Docker学习】—— docker-compose部署之mysql

该文介绍了如何使用Docker部署MySQL,包括构建文件目录结构,放置初始化SQL文件,编写Dockerfile,创建环境变量文件,配置docker-compose文件,以及通过sh脚本进行启动和停止操作。
摘要由CSDN通过智能技术生成

前言

   基于若依框架,慢慢学习,总结笔记

1.构建mysql文件目录结构

在这里插入图片描述

2.初始化的sql文件,放置于db文件目录下

在这里插入图片描述

3.dockfile路径及内容

在这里插入图片描述

# 基础镜像
FROM mysql:5.7
# author
MAINTAINER ruoyi

# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/

4.在最外层创建环境变量文件(参考上面截图,创建在home层级下)

  • 文件名:hosts-prod(用于docker-compose等文件获取统一环境变量)
127.0.0.1 master

本机内网IP mysql.host

  • 文件名:prod.env(用于sh脚本使用docker-compose启动时的环境变量设置)
version=1.0.0 #当前版本
active=prod  #测试环境test 生产环境prod

5.docker-compose文件

# 描述 Compose 文件的版本信息
version : '3.8'
# 定义服务,可以多个
services:
  mysql: # 服务名称
    container_name: mysql # 容器名称
    image: mysql:5.7 # 创建容器时所需的镜像
    build:
      context: ./mysql # 可以是dockerfile路径,或者时执行git仓库的url地址
    network_mode: "host" # host 网络模式
    volumes: # 数据卷,目录挂载
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d
      - "./../hosts-${active}:/etc/hosts" # 获取环境变量映射进容器内
    command: [ # 执行命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令)
      'mysqld',
      '--innodb-buffer-pool-size=80M',
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci',
      '--default-time-zone=+8:00',
      '--lower-case-table-names=1',
      '--sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' # 设置所支持的SQL语法
    ]
    environment: # 添加环境变量
      MYSQL_DATABASE:  '数据库名'
      MYSQL_ROOT_PASSWORD: "数据库密码"
    restart: always # 容器总是重新启动

6.编写sh执行脚本

docker-compose -f docker-compose-mysql.yml  --env-file ./../prod.env -p mysql down
docker-compose -f docker-compose-mysql.yml  --env-file ./../prod.env -p mysql build
docker-compose -f docker-compose-mysql.yml  --env-file ./../prod.env -p mysql up -d

接下来执行sh脚本就好啦,注意观察是否部署成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值