Я только что создал свое первое dockerized приложения, и я использую Докер-Compose, чтобы запустить его на моем сервере клиентов:Как обрабатывать журналы хранения и резервного копирования и журналы приложений со многими связанными контейнерами?
web:
image: user/repo:latest
ports:
- "8080:8080"
links:
- db
db:
image: postgres:9.4.4
Он предоставляет REST API (Node.js) через 8080 порт. REST API использует базу данных Postgres. Он работает нормально. Моя идея состоит в том, что я передам этот файл (docker-compose.yml) моему клиенту, и он просто запустит docker-compose pull && docker-compose up -d
каждый раз, когда он захочет вытащить новый код приложения из репо (при условии, что у него есть права на доступ к репозиторию user/repo
.
Однако я должен обрабатывать две задачи:. копии базы данных и резервных копий журнала
Как я могу выставить базу данных на хост (докер хост) системы, например, определить хрон, что будет делать дамп базы данных и хранить его на S3?
Я прочитал статью об объемах хранения контейнеров и докеров. Как я понимаю, в моей настройке все файлы базы данных будут храниться в «контейнерной памяти», которая будет потеряна, если контейнер будет удален с хоста. Поэтому я должен использовать том докера, чтобы правильно хранить данные базы данных на стороне «хозяина»? Как я могу сделать это с изображением postgres?
В моем приложении я записываю всю информацию в stdout и stderr в случае ошибок. Было бы, если бы эти журналы были «потоковыми» непосредственно в некоторые файлы на хост-системе, поэтому они могли бы быть скопированы (например, с помощью cron job?) - как я могу это сделать? Или, может быть, есть лучшее aproach?
Извините за столько вопросов, но я новичок в докер-мир, и это очень трудно для меня, чтобы понять, как это на самом деле работает и как это должно работать.