Добавление и использование переменной в dockerfile - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь взять существующий образ докера Mantis Bug Tracker и расширить его таким образом, чтобы в зависимости от переменной среды я переместил веб-сайт mantis в соответствующую папку. Вот что я придумал:

FROM vimagick/mantisbt:latest
MAINTAINER kev <me@janjko.hr>

RUN mkdir /var/www/tempMove && \
 mv /var/www/html/* /var/www/tempMove/ && \
 mkdir /var/www/html/${MANTIS_FOLDER:-mantis} && \
 mv /var/www/tempMove/* /var/www/html/${MANTIS_FOLDER:-mantis}

Я использую синтаксис $ {variable: -word}, ​​а "mantis" используется по умолчанию. Когда я использую это изображение, веб-сайт всегда оказывается в папке mantis, то есть он не берет мою строку из docker-compose:

environment:
  - MANTIS_FOLDER=example

Что я делаю не так?

1 Ответ

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

Согласно документации docker-compose вам необходимо использовать ARGS: аргументы сборки, которые являются переменными среды, доступными только во время процесса сборки.

Примечание: Если вашСервис определяет опцию сборки, переменные, определенные в окружении, автоматически не видны во время сборки.Используйте опцию args сборки для определения переменных среды во время сборки.

Dockerfile следует изменить на:

FROM vimagick/mantisbt:latest
MAINTAINER kev <me@janjko.hr>

ARG MANTIS_FOLDER

RUN mkdir /var/www/tempMove && \
 mv /var/www/html/* /var/www/tempMove/ && \
 mkdir /var/www/html/${MANTIS_FOLDER:-mantis} && \
 mv /var/www/tempMove/* /var/www/html/${MANTIS_FOLDER:-mantis}

docker-compose.yaml также следует изменить:

version: '3'
services:
  service:
    build:
      context: .
      args:
        MANTIS_FOLDER: example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...