У меня есть контейнер mysql
, который отлично работает. Я могу запустить его и увидеть его и запустить в списке докеров ps.Избегайте жесткого кодирования контейнера mysql в моем сценарии контейнера apache
Затем я пытаюсь запустить другой контейнер learnitouch
, в котором сценарий оболочки engine-db-seed.sh
пытается подключиться к серверу контейнеров 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
от проверки докеров на контейнере mysql
. Не самый автоматический способ ...
Как я могу обойтись без такой жесткой кодировки?
Запуск 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
Я не знал, что имя контейнера было предложено в качестве имени хоста службы. Благодаря ! – Stephane