开启掘金成长之旅!这是我参与「掘金日新计划 · 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
.
您的输出应与此类似:
如果你想将数据库从 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 实例
接下来,像这样建立一个新连接:
单击“确定”并单击您的连接。
现在我们可以随意使用我们的数据库了。
关闭和清理
我们不希望我们的图像全天候运行 24/7,但关闭它可能有点棘手。
在您的终端中,按ctrl + c
,这可能会也可能不会优雅地杀死容器🤷。无论哪种方式,docker-compose down
之后运行,你的容器应该被关闭。现在你只需要docker-compose up
再次运行,你就会回到你离开的地方。
如果你想重新开始一切,运行docker system prune -a
和docker volume prune
。第一个命令删除所有未使用的容器,第二个命令删除所有未使用的卷。我建议经常这样做,因为 Docker 喜欢把所有东西都藏起来,导致千兆字节加起来。
结论
借助 Docker Compose,我们可以在安全、隔离的环境中运行容器化数据库,同时仍然能够即时更改数据库类型。最重要的是,在大型项目中,我们可以充分利用 Docker Compose 并一次编排所有不同的服务。如您所见,我们只需要复制/粘贴 YAML 文件并运行docker-compose up
即可拥有一个完全可操作的开发数据库。