В вашей настройке Docker Compose, как вы показали, для связи между контейнерами вы можете использовать имена сервисов (universe
, redis
, mysql
) в качестве обычных имен хостов, и они будут разрешены на внутренний IP-адрес контейнера, каким бы он ни был.
Обратите внимание, что если вы используете опцию ports:
для переназначения опубликованного порта, вам все равно нужно подключиться к внутреннему порту (тот, что справа от двоеточия). Например, вы бы подключились к mysql:3306
, даже если вы указали другое сопоставление внешних портов или вообще не сопоставляли порты.
Это не работает вне пространства Docker; там вы подключаетесь к DNS-имени хоста или IP-адресу с опубликованным ports:
, и факт Docker полностью скрыт от вас.