Почему docker-compose up -d к имени контейнера стал добавлять hash?

Когда вы запускаете команду docker-compose up -d, docker-compose создает контейнеры на основе определенных сервисов, указанных в файле docker-compose.yml. По умолчанию, docker-compose для каждого создаваемого контейнера добавляет хеш (hash) к его имени.

Добавление хеша в имя контейнера в docker-compose выполняется для обеспечения уникальности идентификаторов контейнеров. Это позволяет избежать возможных конфликтов и ошибок, особенно в случае, когда вы запускаете несколько экземпляров одного и того же сервиса.

Хеш в имени контейнера включает в себя экспортированное имя проекта (если указано) и имя сервиса, а также уникальный идентификатор (16-значный хеш - δ). Например, если у вас есть сервис с именем "web" и имя проекта "myproject", то имя контейнера может выглядеть так: "myproject_web_δ".

Добавление хеша в имя контейнера также позволяет поддерживать стабильность взаимодействия между контейнерами, особенно при редактировании файла docker-compose.yml и добавлении/изменении сервисов. После каждого обновления docker-compose.yml, docker-compose будет генерировать новый хеш для контейнеров, что помогает избежать возможных проблем с зависимостями или нарушением порядка загрузки сервисов.

Если вам необходимо изменить это поведение и использовать статическое имя для контейнера, вы можете явно задать "container_name" (имя контейнера) в блоке определения сервиса в файле docker-compose.yml. Например:

services:
  web:
    container_name: my_web_container
    ...

В этом случае имя контейнера будет всегда "my_web_container" при запуске контейнера с помощью docker-compose up -d.