Dockerfile не заменяет текст, а командная строка - возможная ошибка?

У меня есть простой 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

@eLRuLL обновлен.

Kevin 13.12.2018 23:24

На самом деле это работает, например. начиная с ubuntu: последняя версия. Я попробовал просто удалить ведущий аргумент / из исходной копии (потому что я использовал файл в моем рабочем каталоге) и скопировал файл в / tmp, просто чтобы провести быстрый тест.

gile 13.12.2018 23:26

да, Кевин, это в основном похоже на проблему с путем к вашему локальному файлу /my-textfile.conf. Этот файл действительно находится в корневой папке?

eLRuLL 13.12.2018 23:28

ах нет, извините, его в /etc/..../myconfig.conf не в корне.

Kevin 13.12.2018 23:33

@gile А можно через debian:7.11 попробовать? и посмотреть, получится ли у вас такой же результат?

Kevin 13.12.2018 23:35

В Linux это работает должным образом, начиная с debian: 7.11. Докер версии 18.09.0, сборка 4d60db4. Я не могу тестировать на MAC OSX.

gile 13.12.2018 23:36

@gile Вы говорите, что в команде COPY удалите ведущий /? Похоже, это не сработало для меня.

Kevin 13.12.2018 23:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто резюмирую.

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

I need to change TEXTTOREPLACE with 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

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

I need to change my-new-text with my-new-text

Кажется, все работает как положено.

Хм, вы правы, в этом примере это работает, должно быть, что-то еще, что я делаю в остальной части этого файла докеров, не позволяет ему измениться. Спасибо за подопытного кролика @gile

Kevin 14.12.2018 00:17

@Kevin Я пробовал то же самое, что и gile на OSX, и это работает.

janos 14.12.2018 07:50

Другие вопросы по теме