避免在我的apache容器脚本

时间:2016-09-10 13:16:58

标签: mysql docker

我有一个运行正常的mysql容器。我可以启动它并在docker ps列表中查看并运行。

然后我尝试运行另一个learnitouch容器,其中engine-db-seed.sh shell脚本尝试连接到mysql容器服务器。

learnitouch容器Dockerfile包含:

ENTRYPOINT ["/bin/bash", "/usr/bin/learnintouch/engine-db-seed.sh"]

engine-db-seed.sh文件包含:

/usr/bin/mysql/install/bin/mysql --protocol=tcp -h 172.17.0.2 -u root -proot -v < /usr/bin/learnintouch/db_engine-db.sql

db_engine-db.sql正在mysql数据库中播种。

但是我必须在mysql选项中看到-h容器IP的硬编码。我从172.17.0.2容器上的docker inspect获取了mysql IP地址。不是最自动化的方式...

如果没有这样的硬编码怎么办?

运行mysql容器:

docker run -d -p 3306:3306 -v /home/stephane/dev/php/learnintouch/docker/mysql/data:/usr/bin/mysql/install/data --name mysql stephane/mysql:5.6.30

运行learnintouch容器:

docker run -p 127.0.0.1:80:80 --link mysql:mysql --name learnintouch stephane/learnintouch

我使用Docker版本1.12.1,构建23cf638

1 个答案:

答案 0 :(得分:0)

只需使用服务名称并确保两个服务在同一网络上运行(默认情况下为bridge0)。

所以如果你像这样创建你的mysql服务

docker run -d --name foo mysql-image

您的engine-db-seed.sh可能

/usr/bin/mysql/install/bin/mysql --protocol=tcp -h foo -u root -proot -v < /usr/bin/learnintouch/db_engine-db.sql

mysql将发出foo的dns请求,Docker会将其解析为foo服务的IP。