Dockerfile не заменяет текст, но командная строка делает, возможная ошибка? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть простой Dockerfile, который копирует шаблон, который я использовал sed для замены некоторых переменных.Довольно прямо вперед.Выглядит очень выполнимо и из того, что я видел / читал для всех намерений и целей, он должен сделать это.

COPY /my-dir/my-textfile.conf /to/my/docker/path.conf
RUN sed -i s:TEXTTOREPLACE:my-new-text:g /to/my/docker/path.conf

Затем я запускаю docker build...., затем docker run ... bash, затем я cat мой файл и TEXTTOREPLACE все еще там.

Запустите ту же команду sed в bashи это работает без проблем.

Есть мысли?Что я делаю не так / не вижу?

Спасибо!РЕДАКТИРОВАТЬ по запросу: базовый образ debian:7.11, рабочая станция MAC OSX

1 Ответ

0 голосов
/ 14 декабря 2018

Просто подведу итог.

  • У меня есть файл my-textfile.conf в моем рабочем каталоге.Его содержимое:

Мне нужно изменить TEXTTOREPLACE на my-new-text

  • Моя тестовая система - Ubuntu Linux 16.04, работающая в Docker версии 18.09.0, сборка 4d60db4.
  • Это Dockerfile

FROM debian:7.11 COPY my-textfile.conf /tmp/path.conf RUN sed -i s:TEXTTOREPLACE:my-new-text:g /tmp/path.conf

Я запускаю следующие команды:

docker build -t mytestimage .
docker run -ti -d --name mytestcontainer mytestimage
docker exec -ti mytestcontainer /bin/bash

Затемвнутри контейнера я запускаю:

cat /tmp/path.conf

и получаю такой результат:

Мне нужно изменить новый текст на мой новый текст

Так что, похоже, все работает как положено.

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