从 Docker 文件初始化 google 云 sql
initialize google cloud sql from Docker file
我在 Google 云 SQL 中托管了一个 MySQL 实例,并且我有一个使用该数据库的容器,我尝试从 [=26] 初始化数据库模式=] 文件使用以下命令:
从anapsix/alpine-java
ADD ./mysql/init.sql /docker-entrypoint-initdb.d
init.sql
SET sql_mode = '';
CREATE DATABASE IF NOT EXISTS `locations_schema`;
USE `locations_schema`;
CREATE TABLE `locations` (
`id` int(11) NOT NULL,
`value` varchar(255) NOT NULL,
`label` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
但不幸的是这不起作用,有什么方法可以实现数据库的初始化?
我认为您在实施解决方案时感到困惑。
如果您有容器使用的唯一 Google 云 MySQL 实例,为什么每次从新的自定义映像创建容器时都尝试初始化数据库架构?初始化它只是手动连接一次不是更好吗?
但是 docker-entrypoint-initdb.d
是 used to initialize 本地 MySQL 实例,而不是另一台机器中的实例 运行。请注意,您至少需要指定实例的地址、用户和密码才能让容器连接到它。为此,有不同的方法,您可以找到几个指南,但我认为这不是您需要实施的方法。
但是,如果您尝试在 Docker 容器 中初始化一个 MySQL 实例 运行,您可以找到一个很棒的解释如何做到这一点,但我认为您必须更改您开始使用的图像,因为我认为它不包含 MySQL.
您可以使用脚本来初始化数据库而无需传递 root 密码,前提是 MySQL 将数据持久保存在容器外部并且您在 docker 运行命令。您将需要指定特定于您的环境的环境变量。脚本文件需要通过 Docker 文件添加到容器中。基本 MySQL 命令行:
Set -e
Set -x
然后启动 MySQL 守护进程
Mysql_pid=$!
如果需要,您可以为“..”添加回显,直到 MySQL 管理员启动。
mysql -e "GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '' WITH GRANT OPTION"
然后关闭您的 MySQL 守护程序
wait $mysql_pid -- wait for it to stop
Docker 文档,https://docs.docker.com/samples/library/mysql/ offers more DB start options, including starting from an application in a docker container. You can also combine MySQL and docker commands 其他数据库功能,如创建模式或创建多个数据库。
我在 Google 云 SQL 中托管了一个 MySQL 实例,并且我有一个使用该数据库的容器,我尝试从 [=26] 初始化数据库模式=] 文件使用以下命令:
从anapsix/alpine-java
ADD ./mysql/init.sql /docker-entrypoint-initdb.d
init.sql
SET sql_mode = '';
CREATE DATABASE IF NOT EXISTS `locations_schema`;
USE `locations_schema`;
CREATE TABLE `locations` (
`id` int(11) NOT NULL,
`value` varchar(255) NOT NULL,
`label` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
但不幸的是这不起作用,有什么方法可以实现数据库的初始化?
我认为您在实施解决方案时感到困惑。
如果您有容器使用的唯一 Google 云 MySQL 实例,为什么每次从新的自定义映像创建容器时都尝试初始化数据库架构?初始化它只是手动连接一次不是更好吗?
但是 docker-entrypoint-initdb.d
是 used to initialize 本地 MySQL 实例,而不是另一台机器中的实例 运行。请注意,您至少需要指定实例的地址、用户和密码才能让容器连接到它。为此,有不同的方法,您可以找到几个指南,但我认为这不是您需要实施的方法。
但是,如果您尝试在 Docker 容器
您可以使用脚本来初始化数据库而无需传递 root 密码,前提是 MySQL 将数据持久保存在容器外部并且您在 docker 运行命令。您将需要指定特定于您的环境的环境变量。脚本文件需要通过 Docker 文件添加到容器中。基本 MySQL 命令行:
Set -e
Set -x
然后启动 MySQL 守护进程
Mysql_pid=$!
如果需要,您可以为“..”添加回显,直到 MySQL 管理员启动。
mysql -e "GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '' WITH GRANT OPTION"
然后关闭您的 MySQL 守护程序
wait $mysql_pid -- wait for it to stop
Docker 文档,https://docs.docker.com/samples/library/mysql/ offers more DB start options, including starting from an application in a docker container. You can also combine MySQL and docker commands 其他数据库功能,如创建模式或创建多个数据库。