mysql docker 图片支持在启动时创建多个数据库
mysql docker image support multiply databases creation at start
我需要在一项服务启动时创建数据库。 F.e.:
服务:
db:
image: percona:5.7.24-centos
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db1
MYSQL_DATABASE_1: db2
MYSQL_PASSWORD: password
network_mode: "host"
但不幸的是,使用 image/environment 变量只支持一个:MYSQL_DATABASE
.
我在 docker-compose
中使用它
我可以寻求帮助吗?
因此编写您自己的 Dockerfile 并复制 sql 脚本,这将在映像上创建一个新数据库。
如下所示
FROM mysql
ENV MYSQL_DATABASE=test \
MYSQL_ROOT_PASSWORD=password \
ADD yourscript.sql /docker-entrypoint-initdb.d/
EXPOSE 3306
因此 /docker-entrypoint-initdb.d/
中的所有 scipts 都将在容器启动时执行。实际上,您的第二个数据库创建脚本将进入 yourscript.sql
,它将在容器启动时执行
您可以使用命令构建镜像
docker build -t masterdanny/percona:5.7.24-centos
然后在您的 docker-compose 文件中使用该新图像
干杯。如果您有任何问题,请告诉我。
我需要在一项服务启动时创建数据库。 F.e.: 服务:
db:
image: percona:5.7.24-centos
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db1
MYSQL_DATABASE_1: db2
MYSQL_PASSWORD: password
network_mode: "host"
但不幸的是,使用 image/environment 变量只支持一个:MYSQL_DATABASE
.
我在 docker-compose
中使用它我可以寻求帮助吗?
因此编写您自己的 Dockerfile 并复制 sql 脚本,这将在映像上创建一个新数据库。 如下所示
FROM mysql
ENV MYSQL_DATABASE=test \
MYSQL_ROOT_PASSWORD=password \
ADD yourscript.sql /docker-entrypoint-initdb.d/
EXPOSE 3306
因此 /docker-entrypoint-initdb.d/
中的所有 scipts 都将在容器启动时执行。实际上,您的第二个数据库创建脚本将进入 yourscript.sql
,它将在容器启动时执行
您可以使用命令构建镜像
docker build -t masterdanny/percona:5.7.24-centos
然后在您的 docker-compose 文件中使用该新图像
干杯。如果您有任何问题,请告诉我。