七叶笔记 » golang编程 » 如何使用docker compose创建运行MySQL 实例

如何使用docker compose创建运行MySQL 实例

前言

使用Docker compose,我们可以获得 Docker 的所有好处,甚至更多(最起码单机多实例,我们可以使用同一个端口,这样便于我们管理实例)。Docker通过创建一个虚拟环境(或容器)来运行代码。Docker Compose添加的是多个容器的编排和组织。虽然本教程只会为MySQL实例创建一个容器,但是当您的项目开始增长时,Docker Compose也可以同时运行您所有的各种服务。

我们这次使用ubuntu来做个实验 。

安装docker

sudo apt-get update
安装依赖包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL  | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
 

如下输出:

pub 4096R/0EBFCD88 2017-02-22Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88uid Docker Release (CE deb) <docker@docker.com>sub 4096R/F273FCD8 2017-02-22

安装

sudo apt-get update && sudo apt-get install docker-ce
 

下载docker compose

sudo curl -L " -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
 

查看版本

docker-compose version 1.22.0, build 1719ceb
 

确认完成后,我们创建一个叫做docker-compose.yml的文件。然后编写如下内容:

version: '3.3'services: 
 db: 
 image: mysql:5.7 
  restart : always 
 environment: 
 MYSQL_DATABASE: 'db' 
 # So you don't have to use root, but you can if you like 
 MYSQL_USER: 'user' 
 # You can use whatever password you like 
 MYSQL_PASSWORD: 'password' 
 # Password for root access 
 MYSQL_ROOT_PASSWORD: 'password' 
 ports: 
 # <Port exposed> : < MySQL Port running inside container> 
 - '3306:3306' expose: 
 # Opens port 3306 on the container 
 - '3306' # Where our data will be persisted 
 volumes: 
 - my-db:/ var /lib/mysql
# Names our volume
 volumes: 
 my-db:
 

保存文件,我们在compose.yml相同目录下,运行docker-compose up。可能时间比较慢,因为需要pull容器。完成后,我们可以看到端口3306启动了。

OK,一个mysql实例就启动了。如果我们想定义其他的值,只需要修改docker-compose.yml就可以了。

我们也可以使用几行配置来在docker中运行 postgresql

下面是最简单的配置文件

version: '3.3'services: 
 db: 
 image: postgres 
 restart: always 
 environment: 
 POSTGRES_PASSWORD: password
 

我们可以看到docker compose 提供了一个灵活的和可配置的数据库运行环境。

清理

清理容器很简单,只需要运行如下命令

docker-compose down
docker system prune -a
docker volume prune
 

使用Docker composition,我们可以在安全、隔离的环境中运行一个容器化数据库,同时仍然能够立即更改数据库的类型。除此之外,在大型项目中,我们可以充分利用Docker一次组合和编排所有不同的服务。正如您所看到的,我们只需要复制/粘贴一个 YAML 文件并运行docker- up,以便拥有一个完全可操作的开发数据库。

当然,简单的运行一个mysql服务是容易的。但是,如果要运行到生产环境还需要大量的有针对的测试。我在项目中就遇到过mysql 总是omm的情况。但是在 物理机 环境就没有,然后我调优了大量的参数,才解决了这个问题。

相关文章