47 lines
2.0 KiB
Docker
Executable File
47 lines
2.0 KiB
Docker
Executable File
# Використовуємо стабільну 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"] |