Как избавиться от абсолютных путей в файле, созданном конфигурацией docker -compose? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть тонна docker файлов. Некоторые из них определяют мои микросервисы, некоторые определяют элементы инфраструктуры, такие как db, шина сообщений и т. Д. c. Мне нужно объединить их все в один большой файл docker -compose.yml, чтобы я мог легко запустить его через мой конвейер CI / CD. Я написал этот сценарий оболочки для этого, но похоже, что команда docker-compose config создает файл с абсолютными путями:

#!/bin/bash

ymls=`ls **/docker-compose.*.yml`
compose_string=""

for file in $ymls
do
    compose_string="${compose_string} -f ${file} --project-directory ."
done

echo $compose_string

docker-compose $compose_string config > docker-compose.merged.yml

Это дает мне содержимое файла ниже (сокращено для краткости):

services:
  curator-services:
    build:
      args:
        ELASTIC_PASSWORD: them-pass
      context: E:\repos\them-project\devops\curator
  manager-acl-app:
    build:
      context: E:\repos\them-project
      dockerfile: services/ThemProject.Services.ManagerAcl/Dockerfile

Теперь простым решением было бы просто запустить регулярное выражение или что-то еще и заменить все, что находится в той же строке, что и слово context. Проблема с этим подходом заключается в том, что я храню свои инфраструктурные определения в другой папке, чем мои Dockerfiles микросервисов, поэтому context для части curator-services должно быть context: curator/, а для приложения manager-acl-app должно быть context: ../ . Есть ли способ обойти эти абсолютные пути с помощью docker-compose config?

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете использовать опцию --project-directory с docker-compose config.

Измените свой скрипт на ниже

#!/bin/bash

ymls=`ls docker-compose.*.yml`
compose_string=""
DIR_PATH="." #Change it to Project Directory or current directory
for file in $ymls
do
    compose_string="${compose_string} -f ${file} --project-directory $DIR_PATH"
done

docker-compose ${compose_string} config > docker-compose.yml

Ссылка: - https://docs.docker.com/compose/reference/overview/

Пожалуйста, отметьте --project-directory в ссылка выше

...