如何使用 Docker Compose 创建 MySql 实例

2,237 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

借助 Docker Compose,我们可以获得Docker 的所有优势以及更多优势。Docker 通过为代码运行创建虚拟环境(或容器)来工作。Docker Compose 增加的是多个容器的编排和组织。虽然本教程只会为我们的 MySQL 实例启动一个容器,但当您的项目开始增长时,Docker Compose 也可用于同时运行所有各种服务。

Mac 和 Windows 安装

只需按照此处的Docker for Mac 或 Windows 安装指南进行操作。

Linux安装

首先,让我们下载 Docker 存储库。运行以下命令:

sudo apt-get update

随后

sudo apt-get install \  
apt-transport-https \  
ca-certificates \  
curl \  
software-properties-common

接着

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

要验证您是否拥有存储库,需要运行以下命令:

sudo apt-key fingerprint 0EBFCD88

接着得到

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

现在要安装 Docker,您只需执行以下操作:

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

在 docker 中运行以下程序

sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

通过以下程序检测是否运行成功

docker-compose --version

配置

安装 Docker 后运行它并创建名为docker-compose.yml. 该文件本质上是 Docker 的说明表。

在其中粘贴以下内容:

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:

现在我们可以启动我们的容器了。在您的命令行或终端中,cd进入您创建的目录docker-compose.yml并从那里运行docker-compose up(这在第一次运行时可能需要一段时间,因为 Docker 需要拉取容器)。我们现在应该有一个运行在localhost:3306.

您的输出应与此类似:

image.png

如果你想将数据库从 MySQL 更改为其他数据库,你所要做的就是更改docker-compose.yml并重新启动 Docker Compose。

这是一个简单的 Postgres 数据库示例:

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

使用 Docker Compose 为我们提供了大量的灵活性和配置。如果愿意,我们可以在大约 30 秒内切换数据库!

与 MySQL Workbench 连接

下载 MySQL 工作台

从这里下载 MySQL Workbench 开始。

连接到您的 MySQL 实例

接下来,像这样建立一个新连接:

image.png

image.png

单击“确定”并单击您的连接。

image.png

现在我们可以随意使用我们的数据库了。

关闭和清理

我们不希望我们的图像全天候运行 24/7,但关闭它可能有点棘手。

在您的终端中,按ctrl + c,这可能会也可能不会优雅地杀死容器🤷‍。无论哪种方式,docker-compose down之后运行,你的容器应该被关闭。现在你只需要docker-compose up再次运行,你就会回到你离开的地方。

如果你想重新开始一切,运行docker system prune -adocker volume prune。第一个命令删除所有未使用的容器,第二个命令删除所有未使用的卷。我建议经常这样做,因为 Docker 喜欢把所有东西都藏起来,导致千兆字节加起来。

结论

借助 Docker Compose,我们可以在安全、隔离的环境中运行容器化数据库,同时仍然能够即时更改数据库类型。最重要的是,在大型项目中,我们可以充分利用 Docker Compose 并一次编排所有不同的服务。如您所见,我们只需要复制/粘贴 YAML 文件并运行docker-compose up即可拥有一个完全可操作的开发数据库。