将环境变量传递给 Docker 时 Flyway 迁移失败
Flyway Migrations fails when passing Environment Variables to Docker
正在使用 flyway
执行数据库迁移。使用 dockerized 版本并使用 conf
文件进行 mirgations 配置。
下面是我的配置文件
flyway.url = jdbc:mysql://${MYSQLHOST}:3306/myschema
flyway.user = myusername
flyway.password = mypassword
flyway.schemas = myschema
flyway.cleanDisabled = true
运行下面的命令执行迁移
sudo docker run -e "MYSQLHOST=myhostip" --rm -it -v `pwd`/path/to/confi/:/flyway/conf/ -v `pwd`/path/to/migrations:/flyway/sql boxfuse/flyway:5.1.4 -configFiles=/flyway/conf/flyway.conf migrate
我收到以下错误
ERROR:
Unable to obtain connection from database (jdbc:mysql://${MYSQLHOST}:3306/myschema) for user 'myuser': Could not connect to address=(host=${MYSQLHOST})(port=3306)(type=master) : ${MYSQLHOST}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL State : 08
Error Code : -1
Message : Could not connect to address=(host=${MYSQLHOST})(port=3306)(type=master) : ${MYSQLHOST}
如果我用我的主机 ip 详细信息更改配置文件,迁移就会成功,没有任何错误。我做错了什么?
Flyway 允许您通过一组特定的环境变量传入配置参数;它不会在配置文件中执行完整的变量替换。参见 https://flywaydb.org/documentation/envvars。
你可以做的是删除配置文件的第一行,然后
sudo docker run -e "FLYWAY_URL=jdbc:mysql://myhostip:3306/myschema" ...
我发现只看到一个解释有 envVars 的页面并不是很有帮助 -- 但没有提到实际使用的确切 env 变量名称。
这是环境名称的定义/特别是 gradle 插件,但我怀疑它们通常是有效的:
正在使用 flyway
执行数据库迁移。使用 dockerized 版本并使用 conf
文件进行 mirgations 配置。
下面是我的配置文件
flyway.url = jdbc:mysql://${MYSQLHOST}:3306/myschema
flyway.user = myusername
flyway.password = mypassword
flyway.schemas = myschema
flyway.cleanDisabled = true
运行下面的命令执行迁移
sudo docker run -e "MYSQLHOST=myhostip" --rm -it -v `pwd`/path/to/confi/:/flyway/conf/ -v `pwd`/path/to/migrations:/flyway/sql boxfuse/flyway:5.1.4 -configFiles=/flyway/conf/flyway.conf migrate
我收到以下错误
ERROR:
Unable to obtain connection from database (jdbc:mysql://${MYSQLHOST}:3306/myschema) for user 'myuser': Could not connect to address=(host=${MYSQLHOST})(port=3306)(type=master) : ${MYSQLHOST}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL State : 08
Error Code : -1
Message : Could not connect to address=(host=${MYSQLHOST})(port=3306)(type=master) : ${MYSQLHOST}
如果我用我的主机 ip 详细信息更改配置文件,迁移就会成功,没有任何错误。我做错了什么?
Flyway 允许您通过一组特定的环境变量传入配置参数;它不会在配置文件中执行完整的变量替换。参见 https://flywaydb.org/documentation/envvars。
你可以做的是删除配置文件的第一行,然后
sudo docker run -e "FLYWAY_URL=jdbc:mysql://myhostip:3306/myschema" ...
我发现只看到一个解释有 envVars 的页面并不是很有帮助 -- 但没有提到实际使用的确切 env 变量名称。
这是环境名称的定义/特别是 gradle 插件,但我怀疑它们通常是有效的: