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