Fernus
@Fernus
Техник - Механик :)

Docker. Docker-compose. Запуск через cron. Как?

Есть сервак с окружением docker...всё работает, всё ништяк...

Есть контейнер с MariaDB...

В cron'e делаю две команды для теста:
*/5 * * * * cd /home/USER/ && /usr/local/bin/docker-compose -f prod-compose.yml exec mariadb /usr/bin/mysqldump -u USER -pPASSWORD --single-transaction DB_NAME | gzip > /home/USER/BACKUP/DB_$(date +%d-%m-%Y_%H_%M_%S).sql.tar.gz

*/5 * * * * touch /home/USER/BACKUP/test.txt


Первая НЕ отрабатывает...
Вторая - всё норм.

При этом, если скопировать первую команду и просто запустить в консоле из под этого же пользователя, то норм всё отрабатывает...

Чёт затупил конкретно я...либо лыжи не едут... :)
  • Вопрос задан
  • 357 просмотров
Решения вопроса 1
Fernus
@Fernus Автор вопроса
Техник - Механик :)
В общем победил...

Дело было во флаге -T к команде docker-compose exec

Для чего этот флаг читаем документацию.

В итоге команда такая:
*/5 * * * * cd /home/USER/ && /usr/local/bin/docker-compose -f prod-compose.yml exec -T mariadb /usr/bin/mysqldump -u USER -pPASSWORD --single-transaction DB_NAME | gzip > /home/USER/BACKUP/DB.sql.tar.gz


P.S.: Переход через cd обязателен...иначе не поедет...в случае, если в compose.yml пути везде относительные...а обычно так и есть...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@vitaly_il1
DevOps Consulting
1) посмотрите ошибки при запуске из крона - в почте, если нет редиректа
2) попробуйте без timestamp в имени файла - мне помнится что были какие-то проблемы
Ответ написан
@q2digger
никого не трогаю, починяю примус
Полный путь к docker-compose укажите
Ответ написан
inf
@inf
DevOps Engineer
Может так
*/5 * * * *  /usr/local/bin/docker-compose -f /home/USER/prod-compose.yml exec mariadb /usr/bin/mysqldump -u USER -pPASSWORD --single-transaction DB_NAME | gzip > /home/USER/BACKUP/DB_$(date +%d-%m-%Y_%H_%M_%S).sql.tar.gz
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы