Я борюсь с этой проблемой и попробовал несколько ответов, на которые смотрел (Google / stackoverflow).
Используя скрипт bash, я хочу заменить: image: quay.io/repo/someimage:sometag
на image: quay.io/repo/someimage:newtag
Имея в виду следующее:
- Перед «изображением» есть пробелы, которые я не хочу терять.
- У меня нет старого имени тега изображения, поэтому яне может просто заменить теги.
Мой сценарий оболочки выглядит примерно так:
TEXT="image: quay.io/repo/someimage:"
TEXT_NEW="image: quay.io/repo/someimage:${TAG}"
sed -i "s|$TEXT .*$|$TEXT_NEW|g" "docker-compose.yml"
Я пробовал несколько подходов, но ни один не работал или частично работал: это работает частично, но дляпо какой-то причине он просто добавляет новый TAG к старому TAG. Не заменяет его.
sed -i -e "s|image: quay.io/repo/someimage:*| image: quay.io/repo/someimage:${TAG}|g" docker-compose.yml
Выдает ошибку. Я думаю, из-за '/'.
sed -i "/image: quay.io/repo/someimage:/c image: quay.io/repo/someimage:${TAG}" docker-compose.yml