# Використовуємо стабільну Ubuntu 22.04 FROM ubuntu:22.04 # Вимикаємо інтерактивні запити під час встановлення пакетів ENV DEBIAN_FRONTEND=noninteractive # 1. Встановлюємо всі необхідні пакети одним шаром # mysql-client - для дампу (сумісний з mysql:latest) # lftp - для SFTP передачі # msmtp - для надсилання пошти # ca-certificates - критично для TLS/SSL (Gmail) # cron - для автоматизації щохвилини # openssh-client - для SSH-ключів RUN apt-get update && apt-get install -y \ mysql-client \ lftp \ msmtp \ msmtp-mta \ ca-certificates \ cron \ openssh-client \ && rm -rf /var/lib/apt/lists/* # 2. Налаштовуємо SSH для роботи з ключами RUN mkdir -p /root/.ssh && chmod 700 /root/.ssh # 3. Копіюємо конфігураційні файли # Файл налаштування пошти COPY msmtprc /etc/msmtprc RUN chmod 600 /etc/msmtprc # Скрипт бекапу COPY backup.sh /usr/local/bin/backup.sh RUN chmod +x /usr/local/bin/backup.sh # 4. Створюємо файли логів з правильними правами доступу RUN touch /var/log/msmtp.log && chmod 666 /var/log/msmtp.log RUN touch /var/log/backup.log && chmod 666 /var/log/backup.log # 5. Налаштовуємо Cron (запуск щохвилини) # ВАЖЛИВО: додаємо ". /etc/environment;", щоб Cron бачив паролі з docker-compose RUN echo "* * * * * . /etc/environment; /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | crontab - # 6. Команда запуску контейнера: # - зберігаємо поточні змінні оточення в /etc/environment (щоб їх бачив Cron) # - запускаємо демон cron у фоновому режимі (флаг -f) CMD ["sh", "-c", "printenv > /etc/environment && cron -f"]