Как Бороться С Соглашением Об Именах Именованных Томов В Docker Compose?

  • Автор темы Appeart
  • Обновлено
  • 21, Oct 2024
  • #1

При определении именованных томов в

 
 
 DRIVER              VOLUME NAME
local               flaskthymedata_grafana-data
local               flaskthymedata_influxdb-data
local               flaskthymedata_postgres-data
local               veleda_grafana-data
local               veleda_influxdb-data
local               veleda_jekyll-cache
local               veleda_jekyll-data
local               veleda_postgres-data
local               veledaio_grafana-data
local               veledaio_influxdb-data
local               veledaio_jekyll-cache
local               veledaio_jekyll-data
local               veledaio_postgres-data
 
, their names are prepended with their parent folder name. This causes a problem when scripts outside of docker compose have to interact with them. The question is, what is the best way to deal with this?

Пример сценария может включать в себя следующее docker volume ls :

parent_folder

Где docker run \ --name helper \ --volume="parent_folder_jekyll-data:/web" \ -it busybox \ true docker cp jekyll/web/. helper:/web docker rm helper named volume is populated by the following bash script:

jekyll-data

В приведенном выше случае version: "3" services: nginx: build: ./nginx container_name: nginx ports: - "80:80" volumes: - jekyll-data:/usr/share/nginx/html:ro networks: backend: volumes: jekyll-data: is the name of the parent folder. This means that moving the contents to a different folder would break the application. Is there a proper way to deal with this situation?

Сокращенный вывод docker-compose.yml where unnamed volumes have been removed:

docker-compose.yml

#docker #docker-compose #volume

Appeart


Рег
22 Nov, 2013

Тем
75

Постов
212

Баллов
627
  • 25, Oct 2024
  • #2

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

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

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

 
 
 services:

mongo-database:

container_name: mongo
 

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

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

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

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

volumes: data: driver: local name: mongodata networks: internal-network: driver: bridge name: frontend-network ||answer||

А как насчет создания томов Docker самостоятельно вместо того, чтобы позволять Docker делать это за вас? https://docs.docker.com/engine/reference/commandline/volume_create/

Если вы сами создаете тома Docker, родительская папка не будет автоматически объединена.

 

ProfitEssay


Рег
05 Apr, 2017

Тем
60

Постов
178

Баллов
498
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно