first commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
# Instala herramientas necesarias, incluyendo mongodump
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gzip \
|
||||
tar \
|
||||
curl \
|
||||
unzip \
|
||||
fuse \
|
||||
cron \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Instala dependencias necesarias
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gnupg \
|
||||
curl \
|
||||
ca-certificates \
|
||||
lsb-release \
|
||||
apt-transport-https
|
||||
|
||||
# Añade la clave GPG del repositorio de MongoDB
|
||||
RUN curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
|
||||
gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg
|
||||
|
||||
# Añade el repositorio de MongoDB
|
||||
RUN echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" \
|
||||
> /etc/apt/sources.list.d/mongodb-org-8.0.list
|
||||
|
||||
# Instala mongodump (mongo-tools)
|
||||
RUN apt-get update && apt-get install -y mongodb-database-tools
|
||||
|
||||
# Instala rclone
|
||||
RUN curl https://rclone.org/install.sh | bash
|
||||
|
||||
# Crea los directorios necesarios
|
||||
RUN mkdir -p /backup /data-uploads /root/.config/rclone
|
||||
|
||||
# Declaramos los volúmenes
|
||||
VOLUME ["/data-uploads", "/backup", "/root/.config/rclone"]
|
||||
|
||||
# Copia el script de backup
|
||||
COPY backup.sh /usr/local/bin/backup.sh
|
||||
RUN chmod +x /usr/local/bin/backup.sh
|
||||
|
||||
# Copia el cron job
|
||||
COPY backup-cron /etc/cron.d/backup-cron
|
||||
RUN chmod 0644 /etc/cron.d/backup-cron && \
|
||||
crontab /etc/cron.d/backup-cron
|
||||
|
||||
# Necesario para cron
|
||||
RUN touch /var/log/cron.log
|
||||
|
||||
# Comando de inicio: corre cron y muestra logs
|
||||
CMD cron && tail -f /var/log/cron.log
|
||||
@@ -0,0 +1,3 @@
|
||||
# Ejecutar el script todos los días a las 3:00 AM
|
||||
#*/5 * * * * root /usr/local/bin/backup.sh >> /var/log/cron.log 2>&1
|
||||
0 3 * * * root /usr/local/bin/backup.sh >> /var/log/cron.log 2>&1
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
DATE=$(date +"%Y-%m-%d_%H-%M")
|
||||
BACKUP_DIR="/backup"
|
||||
DATA_SRC="/data-uploads"
|
||||
DUMP_DIR="$BACKUP_DIR/mongo_$DATE"
|
||||
ARCHIVE="$BACKUP_DIR/backup_$DATE.tar.gz"
|
||||
|
||||
echo "1. Realizando backup de MongoDB..."
|
||||
mongodump \
|
||||
--host mongodb \
|
||||
--username txuser \
|
||||
--password hdR2102Frx8us2WkuN21quAn12 \
|
||||
--authenticationDatabase turnosxpress \
|
||||
--db turnosxpress \
|
||||
--out "$DUMP_DIR"
|
||||
|
||||
echo "2. Comprimendo datos..."
|
||||
tar -czf "$ARCHIVE" "$DATA_SRC" "$DUMP_DIR"
|
||||
|
||||
echo "3. Subiendo a Mega con rclone..."
|
||||
rclone copy "$ARCHIVE" hdrdevs-mega:
|
||||
|
||||
echo "4. Eliminando archivos temporales..."
|
||||
rm -rf "$DUMP_DIR"
|
||||
|
||||
echo "✅ Backup finalizado correctamente: $ARCHIVE"
|
||||
@@ -0,0 +1,7 @@
|
||||
docker run -d \
|
||||
--name backupper \
|
||||
--restart unless-stopped \
|
||||
-v /root/my-docker-images/uploads:/data-uploads \
|
||||
-v /root/my-docker-images/backups:/backup \
|
||||
-v /root/my-docker-images/rclone:/root/.config/rclone \
|
||||
backupper
|
||||
@@ -0,0 +1,10 @@
|
||||
Esto ejecuta un contenedor con rclone y permite autorizar la conexion con google drive.
|
||||
|
||||
docker run -it --rm rclone/rclone config
|
||||
|
||||
Una vez generada la configuracion sera almacenada en el home del usuario del host que ejecuto el comando.
|
||||
si es root, en /root/.config/rclone/rclone.conf
|
||||
|
||||
la vamos a copiar a /root/hdr/tx-data/rclone/rclone.conf
|
||||
|
||||
para que el contenedor backupper tenga acceso a esta configuracion.
|
||||
@@ -0,0 +1,5 @@
|
||||
[hdrdevs-mega]
|
||||
type = mega
|
||||
user = hdrdevs@gmail.com
|
||||
pass = uB_5v7fUEtxSd-Fifkno7AGXLoM6vxTKT0XY66QYJQ
|
||||
|
||||
Reference in New Issue
Block a user