В одном докер контейнере база данных, в другом клиентское приложение. Требуется из клиента стучаться в базу, делать бекап и далее загружать его в облако. То есть, с одного контейнера нужно стучаться в другой.
Не подходит:
1. docker exec <args> pg_dump
2. Установка ssh-server, ssh-client
3. Создание общего юнита докера
4. Использование крона на хосте, чтобы в дальнейшем делать docker exec (pg_dump)
Какие варианты есть ещё?
А сеть между контейнерами есть?
Да, есть общая сеть, bridge
5. Ещё один контейнер, в котором будет сидеть клиент который просто подключится к базе данных и скачает её. Через стандартный сокет базы данных И потом загрузит на сервере А внутри контейнера, это через крон или просто bash скрипт
Для этого совсем не обязательно создавать дополнительный контейнер. Я могу это сделать в клиентом контейнере, вместе с бэкендом. Проблема в том, что при подключении к базе данных, утилита pg_dump не работает. Она не внутри базы данных, это отдельный пакет, отдельный скрипт
Логика докер один контейнер - одна задача Ну и этот пакет можно поставить допом, через условный apt Вроде как
Пакет можно поставить дополнительно, но кривой docker compose не даст этого сделать нормально. Потому что при выполнении команды command: в docker-compose.yaml, контейнер убьется после завершения проекта. Есть костыли, которые позволят не убить контейнер, но в таком случае само клиентское приложение не запустится
В таком случае, установку пакета нужно будет выносить в Dockerfile
Это нормальная практика, когда в одном проекте несколько файлов Dockerfile? Впервые с этим сталкиваюсь
Да Вполне Приложение просто делится на несколько папок и в каждой описывается свой докерфайл Сейчас
Блин, не помню где видел это приложение Короче, тебе нужно просто указать разные пути для билда Типа это вполне нормальная практика
Хорошо, я так и сделаю. Сейчас попробую поискать более удобную для меня практику и если не получится найти что то более удобное, реализую твой совет. Спасибо)
Обсуждают сегодня