запустите sed в dockerfile, чтобы заменить текст значением arg сборки - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь использовать sed, чтобы заменить текст "localhost" в моем nginx.conf на IP-адрес моего хоста докера (к вашему сведению: локально использую докер, на котором запущен докер 192.168.99.100).

Мой Dockerfile для nginx выглядит так:

FROM nginx:alpine
ARG DOCKER_HOST
COPY ./nginx.conf /etc/nginx/nginx.conf
RUN sed -i 's/localhost/${DOCKER_HOST}/g' /etc/nginx/nginx.conf
EXPOSE 80

Мой файл nginx.conf выглядит следующим образом (примечание: большинство исключено для простоты)

http {

   sendfile on;

   upstream epd {
      server localhost:8080;
   }

   # ...
}

Я ожидаю, что "localhost" будет заменен на "192.168.99.100", но на самом деле он будет заменен на "$ {DOCKER_HOST}". Это вызывает ошибку

хост не найден в восходящем потоке "$ {DOCKER_HOST}: 8080"

Я пробовал несколько других вещей, но я не могу заставить это работать. Я могу подтвердить, что аргумент сборки DOCKER_HOST доходит до Dockerfile через мой сценарий создания docker, поскольку я могу повторить это.

Большое спасибо за любые ответы ...

1 Ответ

0 голосов
/ 07 января 2019

Заменить одинарные кавычки ' вокруг s/localhost/${DOCKER_HOST}/g на двойные кавычки ". Переменные не будут интерполироваться в одинарных кавычках.

...