Git субмодулей с docker -композицией сборки - PullRequest
1 голос
/ 22 февраля 2020

Я пытаюсь создать суперпроект git, который содержит подмодули и файл docker-compose.yml в суперпроекте для построения всех подмодулей.

Как обсуждено здесь:

https://nickjanetakis.com/blog/docker-tip-10-project-structure-with-multiple-dockerfiles-and-docker-compose

{ ссылка }

Пример структуры файла:

.
├── docker-compose.yml
├── .git
├── .gitmodules
├── module1
│   ├── Dockerfile
│   └── .git
└── module2
    ├── Dockerfile
    └── .git

docker -compose.yml:

version: '3.4'

services:
  module1:
    image: module1
    build:
        context: ./module1
        dockerfile: Dockerfile

  module2:
    image: module2
    build:
        context: ./module2
        dockerfile: Dockerfile

Это также для управления окружающей средой, но это не имеет отношения к моим проблемам. Это отлично работает изначально.

Однако проблема, с которой я сталкиваюсь, заключается в том, что модуль в Dockerfile использует git. Например, в модуле я использую:

git describe --tags || git rev-parse HEAD

для передачи версии git для встраивания в программу моего модуля. Это не работает, потому что папка .git в моем подмодуле больше не папка, а файл со ссылкой на <superproject>/.git/modules/module1/.

Вывод, который я получаю при попытке запустить docker-compose build в superproject is:

fatal: not a git repository: <IMAGE_CWD>/../.git/modules/module1

Итак, git пытается сослаться на файл, который не существует, потому что context: ./module1 установлен в docker-compose.yml

Я понятия не имею, как решить это. Я не хочу расширять контекст в моем docker-compose.yml, потому что тогда мне придется переписать все Dockerfile.

Я видел, как кто-то предложил сбросить git submodules все вместе здесь:

{ ссылка }

Это кажется хакерским.

Я также пытался найти, есть ли возможность иметь папки .git в подмодулях напрямую, в противоположность из git submodule absorbgitdirs но ничего не нашел.

Вроде бы обычное использование, верно? Есть ли этому решение? Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...