From 52b5b301ef0854ee63ab1f8e0b0bf062da89c9b3 Mon Sep 17 00:00:00 2001 From: eroncero Date: Sat, 24 Jan 2026 13:31:47 +0100 Subject: [PATCH] Dockerize application using docker-compose with PostgreSQL --- backend/Dockerfile | 18 ++++++++++++++++++ docker-compose.yml | 38 ++++++++++++++++++++++++++++++++++++++ frontend/Dockerfile | 17 +++++++++++++++++ frontend/app.py | 2 +- 4 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 backend/Dockerfile create mode 100644 docker-compose.yml create mode 100644 frontend/Dockerfile diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..dbdaa1a --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3.11-slim + +WORKDIR /app + +# Install system dependencies for psycopg2 +RUN apt-get update && apt-get install -y \ + libpq-dev \ + gcc \ + && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +EXPOSE 8000 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..841f864 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,38 @@ +version: '3.8' + +services: + db: + image: postgres:15-alpine + container_name: ballet_db + environment: + POSTGRES_USER: ${POSTGRES_USER:-ballet_user} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ballet_pass} + POSTGRES_DB: ${POSTGRES_DB:-ballet_prod} + volumes: + - postgres_data:/var/lib/postgresql/data + expose: + - 5432 + + backend: + build: ./backend + container_name: ballet_backend + environment: + DATABASE_URL: postgresql://${POSTGRES_USER:-ballet_user}:${POSTGRES_PASSWORD:-ballet_pass}@db:5432/${POSTGRES_DB:-ballet_prod} + SECRET_KEY: ${SECRET_KEY:-yoursecretkeyhere} + depends_on: + - db + ports: + - "8000:8000" + + frontend: + build: ./frontend + container_name: ballet_frontend + environment: + API_URL: http://backend:8000 + depends_on: + - backend + ports: + - "8080:8080" + +volumes: + postgres_data: diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..c18bc5c --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.11-slim + +WORKDIR /app + +# NiceGUI might need some dependencies +RUN apt-get update && apt-get install -y \ + procps \ + && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +EXPOSE 8080 + +CMD ["python", "app.py"] diff --git a/frontend/app.py b/frontend/app.py index b2e9e1f..ee27222 100644 --- a/frontend/app.py +++ b/frontend/app.py @@ -138,4 +138,4 @@ def render_inventory_page(): ] ui.table(columns=columns, rows=rows, row_key='name') -ui.run(title="Suite de Producción de Ballet", port=8080) +ui.run(title="Suite de Producción de Ballet", port=8080, host='0.0.0.0')