имя контейнера и имя хоста docker-compose.yml - PullRequest
2 голосов
/ 04 апреля 2019

Какая польза от container_name в docker-compose.yml файле? Могу ли я использовать его как hostname, который является ничем иным, как именем службы в docker-compose.yml файле.

Также, когда я явно пишу hostname в службах, он переопределяет имя хоста, представленное service name?

1 Ответ

2 голосов
/ 04 апреля 2019

hostname: просто устанавливает, что контейнер считает своим именем хоста.В необычном случае вы получили оболочку внутри контейнера, она может появиться в приглашении.Это не влияет ни на что снаружи, и обычно нет никакого смысла устанавливать это.(В основном это тот же эффект, что и имя хоста (1): эта команда не заставляет ничего, кроме вашего хоста, знать заданное вами имя.)

container_name: устанавливает фактическое имяконтейнера, когда он запускается, вместо того, чтобы позволить Docker Compose генерировать его.Если это имя отличается от имени блока в services:, оба имени будут использоваться в качестве DNS-имен для межконтейнерной связи.Если вам не нужно использовать docker для управления контейнером, который был запущен Compose, вам обычно не нужно устанавливать это тоже.

Если вы пропустите оба этих параметра, один контейнер может достичь другого (при условии, что онив том же файле Docker Compose и имеют совместимые настройки networks:), используя имя блока services: и порт, который прослушивает служба внутри контейнера.

version: '3'
services:
  redis:
    image: redis
  db:
    image: mysql
    ports: [6033:3306]
  app:
    build: .
    ports: [12345:8990]
    env:
      REDIS_HOST: redis
      REDIS_PORT: 6379
      MYSQL_HOST: db
      MYSQL_PORT: 3306
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...