From 942da74778861a5fbeb8a4b64fae78f3ba4bc79a Mon Sep 17 00:00:00 2001 From: Gabriel Sancho Date: Sat, 28 Mar 2026 13:40:24 -0300 Subject: [PATCH] fix: remove PostgreSQL initialization from entrypoint and update Docker configuration for external database --- Dockerfile.allinone | 4 ---- backend/src/main/resources/application.yml | 2 +- docker-compose.prod.yml | 23 ++++++++++++++++++++-- docker/entrypoint.sh | 19 ++---------------- docker/supervisord.conf | 12 +---------- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/Dockerfile.allinone b/Dockerfile.allinone index b842548..1aab4ca 100644 --- a/Dockerfile.allinone +++ b/Dockerfile.allinone @@ -29,14 +29,10 @@ ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ nginx \ - postgresql \ supervisor \ openjdk-21-jre-headless \ && rm -rf /var/lib/apt/lists/* -# PostgreSQL data directory -RUN mkdir -p /var/lib/postgresql/data && chown -R postgres:postgres /var/lib/postgresql - # Copy frontend static files COPY --from=frontend-build /app/frontend/dist /usr/share/nginx/html diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 65353f8..5b89daf 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -10,7 +10,7 @@ spring: jpa: hibernate: - ddl-auto: validate + ddl-auto: ${SPRING_JPA_HIBERNATE_DDL_AUTO:validate} show-sql: false properties: hibernate: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 0d007df..0a6b2ba 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,10 +1,31 @@ services: + condado-newsletter-postgress: + image: postgres:16 + container_name: condado-newsletter-postgress + restart: unless-stopped + environment: + POSTGRES_DB: ${APP_DB_NAME:-condado} + POSTGRES_USER: ${SPRING_DATASOURCE_USERNAME} + POSTGRES_PASSWORD: ${SPRING_DATASOURCE_PASSWORD} + volumes: + - postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${SPRING_DATASOURCE_USERNAME} -d ${APP_DB_NAME:-condado}"] + interval: 10s + timeout: 5s + retries: 10 + condado-newsletter: image: sancho41/condado-newsletter:latest container_name: condado-newsletter restart: unless-stopped + depends_on: + condado-newsletter-postgress: + condition: service_healthy environment: SPRING_PROFILES_ACTIVE: prod + SPRING_JPA_HIBERNATE_DDL_AUTO: ${SPRING_JPA_HIBERNATE_DDL_AUTO:-update} + SPRING_DATASOURCE_URL: jdbc:postgresql://condado-newsletter-postgress:5432/${APP_DB_NAME:-condado} SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD} APP_PASSWORD: ${APP_PASSWORD} @@ -25,8 +46,6 @@ services: extra_hosts: - "celtinha.desktop:host-gateway" - "host.docker.internal:host-gateway" - volumes: - - postgres-data:/var/lib/postgresql/data labels: - "traefik.enable=true" - "traefik.http.routers.condado.rule=Host(`condado-newsletter.lab`)" diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index b1b1465..3dd6582 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -5,26 +5,11 @@ APP_DB_NAME=${APP_DB_NAME:-condado} APP_DB_USER=${SPRING_DATASOURCE_USERNAME:-condado} APP_DB_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-condado} -# ── Initialise PostgreSQL data directory on first run ───────────────────────── -if [ ! -f /var/lib/postgresql/data/PG_VERSION ]; then - echo "Initialising PostgreSQL data directory..." - su -c "/usr/lib/postgresql/16/bin/initdb -D /var/lib/postgresql/data --encoding=UTF8 --locale=C" postgres - - # Start postgres temporarily to create the app database and user - su -c "/usr/lib/postgresql/16/bin/pg_ctl -D /var/lib/postgresql/data -w start" postgres - - su -c "psql -v ON_ERROR_STOP=1 -c \"CREATE USER ${APP_DB_USER} WITH PASSWORD '${APP_DB_PASSWORD}';\"" postgres - su -c "psql -v ON_ERROR_STOP=1 -c \"CREATE DATABASE ${APP_DB_NAME} OWNER ${APP_DB_USER};\"" postgres - - su -c "/usr/lib/postgresql/16/bin/pg_ctl -D /var/lib/postgresql/data -w stop" postgres - echo "PostgreSQL initialised." -fi - # ── Ensure supervisor log directory exists ──────────────────────────────────── mkdir -p /var/log/supervisor -# ── Defaults for all-in-one local PostgreSQL ───────────────────────────────── -export SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL:-jdbc:postgresql://localhost:5432/${APP_DB_NAME}} +# ── Defaults for external PostgreSQL service in production compose ─────────── +export SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL:-jdbc:postgresql://condado-newsletter-postgress:5432/${APP_DB_NAME}} export SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME:-${APP_DB_USER}} export SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-${APP_DB_PASSWORD}} export JWT_EXPIRATION_MS=${JWT_EXPIRATION_MS:-86400000} diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 7cb0399..e7af379 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -6,18 +6,8 @@ logfile_maxbytes=0 pidfile=/var/run/supervisord.pid loglevel=info -[program:postgres] -command=/usr/lib/postgresql/16/bin/postgres -D /var/lib/postgresql/data -user=postgres -autostart=true -autorestart=true -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 - [program:backend] - command=java -Dspring.output.ansi.enabled=always -Dlogging.level.root=DEBUG -jar /app/app.jar +command=java -Dspring.output.ansi.enabled=always -Dlogging.level.root=DEBUG -jar /app/app.jar autostart=true autorestart=true startsecs=15