Файл Docker для клонирования файлов, находящихся в git - PullRequest
0 голосов
/ 19 мая 2018

У меня есть файлы server.xml для 50 приложений, которые различны для всех приложений.Мне нужно написать файл Docker для всех приложений, чтобы захватить этот server.xml.

Где находится server.xml: в частном репозитории Gitserver используется только клон на основе ssh. Я не могу клонировать полное репо только для одного файла server.xml

, что является лучшим подходом для захвата этого файла и создания частииз докер-файла.Есть ли способ сделать это вместо сохранения в dockerfile?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы можете использовать аргумент , чтобы извлечь файл XML и затем встроить его в образ.

FROM alpine
ARG SERVER_CONF
RUN curl ${SERVER_CONF}
EXEC server.sh

Затем вы можете запустить build и передать местоположение файла XML

docker build --build-arg SERVER_CONF=http://localhost/server.xml

В качестве альтернативы вы можете установить это как переменную среды, чтобы вы могли получить XML-файл во время выполнения.

FROM alpine
ARG SERVER_CONF
ENV SERVER_CONF=${SERVER_CONF}
RUN server.sh --config=$SERVER_CONF

Это позволит вам динамически устанавливать конфигурацию при сборкеизображение.

Если вы хотите установить конфигурацию во время выполнения, вы можете передать ее как переменную среды при запуске док-контейнера

FROM alpine
RUN server.sh --config=$SERVER_CONF

Затем запустить ваш контейнер с помощью передавая переменную окружения

docker run -e "SERVER_CONF=http://localhost/server.xml" server

Вам не нужно передавать URL, вы можете передать все содержимое XML-файла в виде строки.Вы можете использовать точку входа , чтобы записать содержимое среды в файл перед запуском приложения.

0 голосов
/ 19 мая 2018

Есть ли способ сделать это вместо хранения в dockerfile?

Пока вы загрузили этот server.xml (или просто скопировали его содержимое в локальный файл),вы можете:

  • либо скопировать его в свой Dockerfile
  • или поместить его в публичное, удаленно доступное место, которое ваш контейнер мог бы, во время выполнения, получитьfrom (вместо того, чтобы пытаться клонировать частное репо, чего не должен делать ваш контейнер)
...