feat: Add Docker Compose configuration and instructions for Collify deployment, including build optimizations and updated README.

This commit is contained in:
Marco Gallegos
2025-12-14 22:42:04 -06:00
parent ebbb6c3f00
commit 24874da1c7
3 changed files with 72 additions and 0 deletions

16
.dockerignore Normal file
View File

@@ -0,0 +1,16 @@
.env
.env.bak
__pycache__/
.git/
.gitignore
.venv/
venv/
*.pyc
*.pyo
*.pyd
*.log
dist/
build/
node_modules/
README.md
Vanessa.md

View File

@@ -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

View File

@@ -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: