LINUX.ORG.RU

Как изменить содержимое контейнера сервиса на хостинге?

 


0

1

Работаю с Docker первый раз. Есть сервис на Outline хостинге в docker. Сервис содержит несколько контейнеров, В том числе базы данных и веб приложение. Нужно сделать изменения в веб приложении не утеряв информацию из баз данных. Скачал с Гита исходники сервиса, развернул на локальной машине в docker. В исходниках используется docker-compose.yml. Экспортировал образ вебприложения в архив, распаковал и сделал изменения. Как теперь залить изменения как образ в докер на локалке для теста? Как потом залить изменения на хостинг?

Прочитай книгу «Как освоить докер за 21 наносекунду».

LamerOk ★★★★★
()

Извините, но это даже не вопрос, а целое задание для специалиста. С таким в Job.

P.S. В этих ваших DevOps’ах правильный deploy - настоящее искусство.

ololoid ★★★★
()

Всё смешалось, люди, кони. Есть полное ощущение, что ты в принципе не понимаешь, что делаешь.

Давай по порядку. Сначала расскажи каким образом ты деплоил контейнеры на сервер. Если там создан именованный volume, или примонтирована директория с хоста, то данные в БД не потеряются. Если нет, то потеряются вообще безотносительно приложения. Контейнер приложения можешь пересобирать сколь угодно раз, на БД это не отразится.

Экспортировал образ вебприложения в архив, распаковал и сделал изменения

Какая-то бестолковая дичь. Никакой архив тебе не нужен, у тебя есть исходники и Dockerfile, правь исходники, делай docker-compose build. Всё. А как это доставить на сервер — это вопрос того, как ты деплоил изначально. Можешь просто закинуть исходники и сбилдить на месте, можешь этот самый архив загрузить и импортировать из него. Да как угодно вообще. Разберись с тем, что такое docker registry.

Ну, и в принципе, завязывай с этим аутизмом, давай ссылку на проект, показывай содержание конфига компоуза.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Сначала расскажи каким образом ты деплоил контейнеры на сервер.

Деплоил не я но брали здесь: https://github.com/chsasank/outline-wiki-docker-compose

Никакой архив тебе не нужен, у тебя есть исходники и Dockerfile, правь исходники, делай docker-compose build

Как я понимаю, исходников у меня нет «image: outlinewiki/outline:latest» берётся из хранилища Докера. Теперь вместо этой строки в docker-compose.yml мне как-то нужно вставить указатель на изменённые данные? И вообще, нужен ли мне docker-compose.yml если я хочу обновить только один образ?

LCulver
() автор топика
Ответ на: комментарий от ololoid

Нет. Нескольких фраз с указанием правильного направления работы вполне достаточно :)

LCulver
() автор топика
Ответ на: комментарий от LCulver
    volumes:
      - ./data/pgdata:/var/lib/postgresql/data

Если деплоили в точности так, то данные в БД не потеряются.

Как я понимаю, исходников у меня нет

Есть: https://github.com/outline/outline

вставить указатель на изменённые данные?

Либо указатель на имя образа в регистри, либо убери ключ image и добавь ключ build для сборки контейнера из исходников.

https://github.com/compose-spec/compose-spec/blob/master/build.md

И вообще, нужен ли мне docker-compose.yml если я хочу обновить только один образ?

Не нужен, но так проще.

WitcherGeralt ★★
()

Посмотри примеры в репозиториях какого-нибудь софта, почитай. Тебе нужен CI/CD. С докером это делается через поэтапную сборку, когда сначала собирается дистрибутив, а затем приложение: в таком случае используется кэш и обновляется только нужное. А на сервер это добро прилетает из git, по крону или ещё как-то, и запускаются нужные команды в случае новых коммитов. На эту тему есть статьи и видео на ютубе, поэтому не вижу смысл всё пересказывать, лучше почитать. Например, вот, первая ссылка из гугла: https://habr.com/ru/company/ruvds/blog/488668/

InterVi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.