目录结构

.
│ .env
│ docker-compose.yml
│
└─mysql
├─config
│ my.cnf
│
└─data

mysql 目录下的 data 为数据目录,mysql 的数据表、二进制日志文件就在这里。.env 文件包含了一些变量,这些变量可以在 docker-compose.yml 文件中通过 ${variable_name} 来引用。

当然也可以把 mysql 的目录放到其它地方,这里图个方便,直接放在 yml 文件同级目录了。

.env 文件

MYSQL_ROOT_PASSWORD=root
MYSQL_ROOT_HOST=% MYSQL_DIR=./mysql

MySQL 配置文件 my.cnf

[mysqld]
character-set-server=utf8mb4
default-time-zone='+8:00'
innodb_rollback_on_timeout='ON'
max_connections=500
innodb_lock_wait_timeout=500

如果使用默认配置,这个文件可以省略。

docker-compose.yml

version: '3'

services:

  mysql-db:
container_name: mysql-docker # 指定容器的名称
image: mysql:8.0 # 指定镜像和版本
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_ROOT_HOST: ${MYSQL_ROOT_HOST}
volumes:
- "${MYSQL_DIR}/data:/var/lib/mysql" # 挂载数据目录
- "${MYSQL_DIR}/config:/etc/mysql/conf.d" # 挂载配置文件目录

Environment 变量

  • MYSQL_ROOT_PASSWORD :这个不用解释,root 用户的密码。
  • MYSQL_USER,MYSQL_PASSWORD :这两个变量为可选,创建一个新用户,这个用户在 MYSQL_DATABASE 变量指定的数据库上拥有超级用户权限。
  • MYSQL_DATABASE :指定一个数据库,在容器启动时创建。
  • MYSQL_ALLOW_EMPTY_PASSWORD :设置为 yes 允许 root 用户的密码为空。(不推荐)
  • MYSQL_RANDOM_ROOT_PASSWORD :设置为 yes 将在容器启动时为 root 用户生成一个随机的密码,密码会显示到标准输出流(GENERATED ROOT PASSWORD:......)。
  • MYSQL_ONETIME_PASSWORD :字面意思就是一次性密码,为 root 用户设置,第一次登录后必须修改密码(仅支持 5.6 以上的版本)。

运行容器

在 docker-compose.yml 目录下执行:

> docker-compose up

如果要在后台运行,使用 docker-compose up -d 。

停止容器:

> docker-compose down

如果是前台运行的,使用:Ctrl + C 停止。这两种方式在停止后都会删除容器,下次启动必须使用 up 命令。

停止但不删除容器:

> docker-compose stop

使用 stop 停止后,再次启动使用 start 命令即可。

Docker 运行 MySQL,使用 docker-compose的更多相关文章

  1. 在 树莓派(Raspberry PI) 中使用 Docker 运行 MySQL

    在 树莓派(Raspberry PI) 中使用 Docker 运行 MySQL 本文主要利用 biarms 提供的 Dockerfile 进行安装. 笔者最新发现! MySQL 5.7 Docker ...

  2. Docker运行mysql,redis,oracle容器和SpringBoot项目

    dokcer运行SpringBoot项目 from frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD target/demo-0.0.1-SNAPSHOT ...

  3. 使用docker运行mysql

    以前开发的时候都是用本地的sqlite开发,但是极少数情况下,sqlite支持的语法发布到服务器上链接mysql会报错. 为了避免这种现象,还是链接本地mysql开发还是更稳定的, 可是开发的项目多了 ...

  4. Docker运行Mysql,Redis,SpringBoot项目

    Docker运行Mysql,Redis,SpringBoot项目 1.docker运行mysql 1.1拉取镜像 1.2启动容器 1.3进入容器 1.4开启mysql 1.5设置远程连接 1.6查看版 ...

  5. docker运行mysql

    http://blog.csdn.net/u011492260/article/details/77970445 第一步: 安装Docker:首先到docker官网下载适合自己电脑当前系统的版本,并安 ...

  6. windows使用docker运行mysql等工具(二)安装运行mysql

    今天接着上一篇的内容继续来学习安装运行mysql.建议先阅读第一篇:windows安装docker 一 查看mysql版本 如果想知道mysql镜像具体有哪几个版本,需要去docker hub查看. ...

  7. Docker 运行 MYSQL 数据库的总结

    公司里面要求做一个小demo 学习java相关的东西 然后使用了mysql数据库 很早之前做过mysql的容器化运行. 现在想想已经忘记的差不多了  所以这里总结一下 docker化运行mysql数据 ...

  8. docker运行mysql主从备份,读写分离

    1)从Docker官方下拉MySQL的image 打开https://hub.docker.com/ 搜索mysql 在docker中运行 默认tag为latest docker pull mysql ...

  9. docker运行mysql数据库

    1.搜索镜像源是否有mysql镜像 执行语句: sudo docker search mysql  2.拉取需要版本的mysql,执行语句: docker pull mysql:5.7  3.查看安装 ...

  10. Docker 运行MySQL 5.7

    #在opt新建挂载目录 cd /opt #-v 显示创建的目录名 mkdir -vp docker_cfg/mysql/data docker_cfg/mysql/logs docker_cfg/my ...

随机推荐

  1. Django框架(十三)--Django分页组件

    一.分页器 数据量大的话,可以分页获取,查看 例如:图书管理中,如果有成千上万本书,要是都在一个页面中渲染出来,会影响页面美观,所以就要用分页器分页渲染 二.分页器的使用 基本写法 基本写法: 后端: ...

  2. Fork/Join框架与Java8 Stream API 之并行流的速度比较

    Fork/Join 框架有特定的ExecutorService和线程池构成.ExecutorService可以运行任务,并且这个任务会被分解成较小的任务,它们从线程池中被fork(被不同的线程执行)出 ...

  3. Kth Minimum Clique(2019年牛客多校第二场D题+k小团+bitset)

    目录 题目链接 题意 思路 代码 题目链接 传送门 题意 找第\(k\)小团. 思路 用\(bitset\)来标记每个结点与哪些结点直接有边,然后进行\(bfs\),在判断新加入的点与现在有的点是否都 ...

  4. 嵌入式linux开发uboot启动内核的机制(二)

    一.嵌入式系统的分区 嵌入式系统部署在Flash设备上时,对于不同SoC和Flash设备,bootloader.kernel.rootfs的分区是不同的.三星S5PV210规定启动设备的分区方案如下: ...

  5. Resource Site

    GameDevMarket.net Collection of Music, Sound effects (sfx), 2D/3D/GUI Art. http://gaurav.munjal.us/U ...

  6. Spring Boot版本号说明

    Spring Boot的版本选择一般是这样的,如下图: 那版本号后面的英文代表什么含义呢? 具体含义,如下文所示: SNAPSHOT:快照版,表示开发版本,随时可能修改: M1(Mn):M是miles ...

  7. 阿里巴巴java开发手册 学习

    3. [强制]类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外: DO / BO / DTO / VO / AO 正例: MarcoPolo / UserDO / Xml ...

  8. 说几条JavaScript的基本规范

    1.不要在同一行声明多个变量 2.使用===或!==来比较 3.使用字面量的方式来创建对象.数组,替代new Array这种形式 4.不要使用全局函数 5.switch语句必须要带default分支 ...

  9. 洛谷P3063 [USACO12DEC]牛奶的路由Milk Routing

    链接 其实在博客园里写题解都挺应付的都是在洛谷写了之后 挑一部分粘过来 在洛谷写的也都是废话,是为了凑篇幅 主要就是代码 大体思路就一提 这题贪心不行废话 跑m遍SPFA更新最小值 注意数组记得清空 ...

  10. 洛谷p3353在你窗外闪耀的星星题解

    题目 首先被题目甜到了 本来搜标签搜的线段树,结果发现这题目很吸引我我果断点开 觉得前缀和就能A啊 于是乎 要注意 窗户旁边是可以看到的 所以前缀和的时候是不用再-1的 //前缀和 //注意坑点 // ...