Ответ 1
Вам не нужно устанавливать IP-адрес, но вы можете ссылаться на имя виртуального хоста контейнера, и это то же значение, что и ваш связанный контейнер.
Это означает, что вы действительно можете установить DB_HOST из docker-compose.yml
, либо с помощью links
(рекомендуется), либо external_links
:
your_application:
build: .
ports:
- "9180:80"
- "9543:443"
external_links:
- mysql_mysql_1:docker-mysql
environment:
DB_HOST: docker-mysql
Как и при подключении к контейнеру докера, вы можете подключиться к контейнеру mysql:
application-container $ mysql -h docker-mysql -uroot -ppassword -p 3360
Он работает так же, когда вы связываете контейнер с тем же самым docker-composer.yml.
Это также документально:
Ссылка на контейнеры в другой службе. Укажите либо службу имя и псевдоним связи (SERVICE: ALIAS) или просто имя службы (который также будет использоваться для псевдонима).
links: - db - db:database - redis
Запись с именем псевдонима будет создана в /etc/hosts внутри контейнеры для этой услуги, например:
172.17.2.186 db 172.17.2.186 database 172.17.2.187 redis
Также будут созданы переменные среды - см. среду ссылку на переменную для деталей.