From 24874da1c75fc4f9cb2183fccc980933483b44ea Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Sun, 14 Dec 2025 22:42:04 -0600 Subject: [PATCH] feat: Add Docker Compose configuration and instructions for Collify deployment, including build optimizations and updated README. --- .dockerignore | 16 ++++++++++++++++ Readme.md | 17 +++++++++++++++++ docker-compose.collify.yml | 39 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 .dockerignore create mode 100644 docker-compose.collify.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0a73b17 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +.env +.env.bak +__pycache__/ +.git/ +.gitignore +.venv/ +venv/ +*.pyc +*.pyo +*.pyd +*.log +dist/ +build/ +node_modules/ +README.md +Vanessa.md diff --git a/Readme.md b/Readme.md index 0ebae12..bd5ecc2 100644 --- a/Readme.md +++ b/Readme.md @@ -85,6 +85,23 @@ Para detener los contenedores, presiona `Ctrl+C` en la terminal donde se están docker-compose down ``` +### 4. Despliegue con imagen pre-construida (Collify) +Si Collify solo consume imágenes ya publicadas, usa el archivo `docker-compose.collify.yml` que apunta a una imagen en registro (`DOCKER_IMAGE`). + +1) Construir y publicar la imagen (ejemplo con Buildx y tag con timestamp): +```bash +export DOCKER_IMAGE=registry.example.com/vanessa-bot:prod-$(date +%Y%m%d%H%M) +docker buildx build --platform linux/amd64 -t $DOCKER_IMAGE . --push +``` + +2) Desplegar en el servidor (Collify) usando la imagen publicada: +```bash +export DOCKER_IMAGE=registry.example.com/vanessa-bot:prod-20240101 +docker compose -f docker-compose.collify.yml pull +docker compose -f docker-compose.collify.yml up -d +``` +`docker-compose.collify.yml` usa `env_file: .env`, así que carga las credenciales igual que en local o configúralas como variables de entorno en la plataforma. + --- ## 🧩 Arquitectura Interna diff --git a/docker-compose.collify.yml b/docker-compose.collify.yml new file mode 100644 index 0000000..807c09a --- /dev/null +++ b/docker-compose.collify.yml @@ -0,0 +1,39 @@ +version: "3.8" + +services: + bot: + image: ${DOCKER_IMAGE:-vanessa-bot:latest} + container_name: vanessa_bot + restart: always + env_file: + - .env + environment: + - MYSQL_HOST=db + - MYSQL_USER=${MYSQL_USER} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_DATABASE=${MYSQL_DATABASE} + depends_on: + db: + condition: service_healthy + command: ["python", "main.py"] + + db: + image: mysql:8.0 + container_name: vanessa_db + restart: always + environment: + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -h localhost -u${MYSQL_USER} -p${MYSQL_PASSWORD}"] + interval: 10s + timeout: 5s + retries: 6 + start_period: 30s + volumes: + - mysql_data:/var/lib/mysql + +volumes: + mysql_data: