У меня есть простой 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
На самом деле это работает, например. начиная с ubuntu: последняя версия. Я попробовал просто удалить ведущий аргумент / из исходной копии (потому что я использовал файл в моем рабочем каталоге) и скопировал файл в / tmp, просто чтобы провести быстрый тест.
да, Кевин, это в основном похоже на проблему с путем к вашему локальному файлу /my-textfile.conf. Этот файл действительно находится в корневой папке?
ах нет, извините, его в /etc/..../myconfig.conf не в корне.
@gile А можно через debian:7.11 попробовать? и посмотреть, получится ли у вас такой же результат?
В Linux это работает должным образом, начиная с debian: 7.11. Докер версии 18.09.0, сборка 4d60db4. Я не могу тестировать на MAC OSX.
@gile Вы говорите, что в команде COPY удалите ведущий /? Похоже, это не сработало для меня.





Просто резюмирую.
my-textfile.conf. Его содержание:I need to change TEXTTOREPLACE with my-new-text
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
и я получаю такой результат:
I need to change my-new-text with my-new-text
Кажется, все работает как положено.
Хм, вы правы, в этом примере это работает, должно быть, что-то еще, что я делаю в остальной части этого файла докеров, не позволяет ему измениться. Спасибо за подопытного кролика @gile
@Kevin Я пробовал то же самое, что и gile на OSX, и это работает.
@eLRuLL обновлен.