本文将介绍在容器内运行数据库的基本思路,包括使用数据卷和网络来持久化数据、让应用与数据库通信,以及如何通过一个 Compose 文件一键设置本地开发环境。最后,我们还将示范如何将调试器连接到容器内运行的应用。
无需在本地安装和配置数据库服务,我们可以直接使用官方 MySQL 镜像,在容器中完成数据库的运行。
在启动 MySQL 容器之前,我们需要创建用于持久化数据和配置的卷。优先使用 Docker 提供的托管卷,而非绑定挂载。关于卷的更多信息,可参考官方文档。
现在创建卷。为数据创建一个卷,为 MySQL 的配置创建一个卷。
$ docker volume create MySQL
$ docker volume create MySQL_config
接下来创建一个网络,应用与数据库将通过该网络进行通信。这里使用用户自定义的桥接网络,便于 DNS 查找并在连接字符串中使用。
$ docker network create MySQLnet
现在可以在容器中运行 MySQL,并将其附加到前面创建的卷和网络。Docker 将从镜像仓库拉取镜像并在本地运行。在以下命令中,-v 选项用于挂载卷以持久化数据。有关卷的更多信息,请参阅 Docker 文档。
$ docker run –rm -d -v MySQL:/var/lib/mysql
-v MySQL_config:/etc/mysql -p 3306:3306
–network MySQLnet
–name MySQLdb
-e MYSQL_ROOT_PASSWORD=p@SSw0Rd1
MySQL
现在,让我们验证数据库是否正在运行并且可以连接。以下命令用于连接容器内正在运行的 MySQL 数据库,提示输入密码时输入“p@SSw0Rd1”。
$ docker exec -ti MySQLdb mysql -u root -p
