2015-08-01 35 views
5

Tôi cố gắng tạo bản sao lưu tự động (mỗi đêm ở 4) từ cơ sở dữ liệu postgresql chạy bên trong vùng chứa docker.chạy "docker run" từ crontab

#!/bin/sh 

CONTAINER=`docker ps|grep name_of_container|awk '{print $1}'` 
USER='postgre_user' 
PASSWORD='changed' 
BUDIR='/some/path/backup/' 

docker run -it --link $CONTAINER:db -v $BUDIR:/backup/ -e "PGPASSWORD=$PASSWORD" pg_dump -h db -U $USER -Fc -f /backup/$(date +%Y-%m-%d-%H-%M-%S).dump 

crontab của tôi trông như thế này:

0 4 * * * /path/to/script.sh 

Các kịch bản hoạt động tốt khi tôi thực hiện nó bằng tay và nó cũng được thực hiện từ cron (Tôi đã thử * * * * * để gỡ lỗi).

Tôi không thể tìm ra cách làm cron và tập lệnh hoạt động cùng nhau. Cho đến nay tôi đã cố gắng:

  • ghi biến để log file
  • đầu ra kiểm tra từ crontab (* * * * * [...] &>cron.log)
  • đầu ra kiểm tra từ docker exec [...] > output.log trong kịch bản

$CONTAINER chứa Docker id chính xác khi chạy từ cron, cron.log và output.log được tạo nhưng trống.

Bất kỳ ý tưởng nào?

Trả lời

4

Không thể sử dụng docker run -it --link [...] khi chạy từ cron - Tôi sử dụng docker run --link [...] ngay bây giờ.

Các vấn đề liên quan