将航线添加到MySQL Docker容器
我正在构build一个派生到这个为Docker容器的MySQL(使用它作为一个起点): https : //github.com/docker-library/mysql
我已经修改Dockerfile以在Flyway中添加。 一切都设置为编辑configuration文件连接到本地数据库实例等。意图是从https://github.com/docker-library/mysql/blob/master/5.7/docker-entrypoint.sh
调用此命令https://github.com/docker-library/mysql/blob/master/5.7/docker-entrypoint.sh
文件(作为入口点运行)在第186行左右:
flyway migrate
当从shell脚本中运行这个连接时,我得到一个连接被拒绝:
Flyway 4.1.2 by Boxfuse ERROR: Unable to obtain Jdbc connection from DataSource (jdbc:mysql://localhost:3306/db-name) for user 'root': Could not connect to address=(host=localhost)(port=3306)(type=master) : Connection refused ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SQL State : 08 Error Code : -1 Message : Could not connect to address=(host=localhost)(port=3306)(type=master) : Connection refused
但是,如果我从shell脚本中删除命令,重build并login到容器,并手动运行相同的命令,它没有问题。
我怀疑脚本连接数据库的方式可能有些不同(它有一个内置的SQL“runner”),但我似乎无法追捕它。 在这个过程中,容器会重新启动服务器,这可能与此处有所不同。
由于这个容器是用于开发的,所以一个替代scheme(真正的解决方法)就是使用内置的SQL“runner”来使用这个容器,使用Flyway期望的文件名格式,然后使用Flyway来pipe理生产数据库的版本。
在此先感谢您的帮助。
我的意思是这是从准备好的形象(开始)开始的好方法。
-
你可以从图像docker“mysql”
FROM mysql
如果您启动完成的图像 – 创build新版本时,docker工人将只更新差异。
-
接下来,你可以安装java和net-tools
RUN apt-get -y install apt-utils openjdk-8-jdk net-tools
-
configurationmysql
ENV MYSQL_DATABASE=mydb ENV MYSQL_ROOT_PASSWORD=root
-
添加飞路
ADD flyway /opt/flyway
-
添加迁移
ADD sql /opt/flyway/sql
-
添加configurationflyway
ADD config /opt/flyway/conf
-
添加脚本开始
ADD start /root/start.sh
-
检查启动MySQL
RUN netstat -ntlp
-
检查Java版本
RUN java -version
示例文件:/opt/flyway/conf/flyway.conf
flyway.driver=com.mysql.jdbc.Driver flyway.url=jdbc:mysql://localhost:3306/mydb flyway.user=root flyway.password=root
示例文件:start.sh
#!/bin/bash cd /opt/flyway flyway migrate # may change to start.sh to start product migration or development.
航道文件
我的意思是说你在下一步可能会使用飞路作为服务:
例如:
docker run -it -p 3307:3306 my_docker_flyway /root/start << migration_prod.sh docker run -it -p 3308:3306 my_docker_flayway /root/start << migration_dev.sh
等等