docker-compose v3 добавить имя папки к сетевому имени

Когда я запускаю docker-compose up -d, докер всегда создает имя контейнера и сетевое имя, к которым добавляется имя папки, содержащей docker-compose.ymlfile.

Я могу указать имя контейнера следующим образом:

nginx:
    container_name: nginx
    build:
        context: .
        dockerfile: .docker/docker-nginx.dockerfile

Но как я могу указать имя сети, чтобы оно не добавляло к нему имя папки?

Спасибо.


person Rashidul Islam    schedule 03.03.2017    source источник


Ответы (2)


Docker Добавляет к имени текущей папки имя всех компонентов, созданных с помощью файла компоновки docker.

Например: если имя текущей папки, содержащей файл docker-compose.yml, является тестовым, к нему будут добавлены все имена томов, сетей и контейнеров. Чтобы решить эту проблему, люди ранее предложили идею использования флага -p с командой docker-compose, но решение не самое подходящее, так как имя проекта требуется сразу после атрибута -p. Затем имя проекта добавляется ко всем компонентам, созданным с помощью файла компоновки docker.

Решение вышеуказанной проблемы заключается в использовании свойства name, как показано ниже.

volumes: 
  data:
    driver: local
    name: mongodata

networks: 
  internal-network:
    driver: bridge
    name: frontend-network

Этот том можно обозначить в служебном разделе как

services:
  mongo-database:
      volumes: 
        - data:/data/db
      networks: 
        - internal-network

Приведенный выше атрибут name не позволит docker-compose добавлять имя папки в начало.

Примечание. В качестве имени контейнера можно использовать свойство container_name.

services:
  mongo-database:
    container_name: mongo
person Shubhanshu Rastogi    schedule 27.11.2019
comment
Чрезвычайно полезный справочник, никогда не знал о сетевом атрибуте name. Я использовал container_name раньше, но должен был прийти сюда, чтобы освежить в памяти его использование. Можно ли обновить пример с -p flag , я не вижу ссылки на docker-compose up --help, и насколько я знаю -p для docker run для портов? - person CvRChameleon; 05.08.2020
comment
Да, верно -p предназначен для портов, и это можно сделать в докере, используя порты: - «30050: 8161» Будьте осторожны с выравниванием. Вы можете использовать vs code с расширением docker-compose, чтобы сделать это легко. - person Shubhanshu Rastogi; 05.08.2020
comment
Дело в том, что ваш ответ намекал на -p и его использование, он как бы предполагал, что вы можете использовать его для создания --project-name, что является двумя разными концепциями. Просто хотел попытаться прояснить это для будущих читателей (и для меня). - person CvRChameleon; 05.08.2020

Вы должны поместить файл «.env» в корень каталога вашего проекта docker-compose.

COMPOSE_PROJECT_NAME=MyFancyProject

Дополнительные сведения см. в документации по Docker: https://docs.docker.com/compose/reference/envvars/

Если вы не используете docker-compose, вы можете использовать параметр «-p», чтобы установить это на docker run.

person opHASnoNAME    schedule 03.03.2017
comment
тогда докер добавит имя проекта вместо имени папки, верно? - person Rashidul Islam; 08.03.2017
comment
Для справки, аргумент -p также поддерживается командной строкой docker-compose. - person Arnaud P; 07.11.2018
comment
Почему я не могу просто указать имя в файле компоновки? Это не имеет никакого смысла. Цель компоновочного файла — описать проект, верно? Имя проекта не является переменной, и другие вещи могут зависеть от того, является ли оно статическим значением, чтобы на него можно было ссылаться. - person theferrit32; 30.10.2019