chore: rename postgres service to db

This commit is contained in:
bisco
2026-06-24 09:10:18 +02:00
parent 6dd508aa9c
commit 4886516aa3
6 changed files with 22 additions and 10 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
POSTGRES_DB=theatre_lab POSTGRES_DB=theatre_lab
POSTGRES_USER=theatre_lab POSTGRES_USER=theatre_lab
POSTGRES_PASSWORD=replace-with-a-local-password POSTGRES_PASSWORD=replace-with-a-local-password
DATABASE_URL=postgresql://theatre_lab:replace-with-a-local-password@postgres:5432/theatre_lab DATABASE_URL=postgresql://theatre_lab:replace-with-a-local-password@db:5432/theatre_lab
DJANGO_SECRET_KEY=replace-with-a-long-random-development-key DJANGO_SECRET_KEY=replace-with-a-long-random-development-key
DJANGO_DEBUG=true DJANGO_DEBUG=true
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1,backend,azionelab.org DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1,backend,azionelab.org
+7 -3
View File
@@ -12,7 +12,7 @@ stores content, and Docker Compose supplies a reproducible local environment.
Italian fallback content for development when the CMS is unavailable. Italian fallback content for development when the CMS is unavailable.
- `nginx/`: reverse-proxy virtual host for `azionelab.org`, routing public requests to - `nginx/`: reverse-proxy virtual host for `azionelab.org`, routing public requests to
Astro or Wagtail. Astro or Wagtail.
- `postgres`: persistent CMS database. - `db`: persistent PostgreSQL database.
- Docker volumes: `postgres_data` for the database and `media_data` for uploads. - Docker volumes: `postgres_data` for the database and `media_data` for uploads.
See [the architecture document](docs/architecture.md), See [the architecture document](docs/architecture.md),
@@ -91,11 +91,15 @@ The frontend reads `PUBLIC_CMS_API_URL`; inside Compose it defaults to
public reverse-proxy address. Change both values for another environment. public reverse-proxy address. Change both values for another environment.
The standard published-page endpoint is also available at `/api/v2/pages/`. The standard published-page endpoint is also available at `/api/v2/pages/`.
The PostgreSQL service is named `db`. Existing `.env` files should replace `@postgres:`
with `@db:` in `DATABASE_URL`; a compatibility network alias keeps older local values
working during the transition.
## Useful commands ## Useful commands
```bash ```bash
# Follow application logs # Follow application logs
docker compose logs -f postgres backend frontend proxy docker compose logs -f db backend frontend proxy
# Run database migrations # Run database migrations
docker compose exec backend python manage.py migrate docker compose exec backend python manage.py migrate
@@ -137,7 +141,7 @@ Database rows and uploaded files must be backed up together:
```bash ```bash
mkdir -p backups/media mkdir -p backups/media
docker compose stop frontend backend docker compose stop frontend backend
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > backups/database.sql docker compose exec -T db sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > backups/database.sql
docker compose cp backend:/app/media/. backups/media/ docker compose cp backend:/app/media/. backups/media/
docker compose start backend frontend docker compose start backend frontend
``` ```
+7 -3
View File
@@ -1,5 +1,5 @@
services: services:
postgres: db:
image: postgres:16.9-alpine image: postgres:16.9-alpine
restart: unless-stopped restart: unless-stopped
init: true init: true
@@ -9,6 +9,10 @@ services:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-replace-with-a-local-password} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-replace-with-a-local-password}
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data
networks:
default:
aliases:
- postgres
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s interval: 5s
@@ -24,7 +28,7 @@ services:
restart: unless-stopped restart: unless-stopped
init: true init: true
environment: environment:
DATABASE_URL: ${DATABASE_URL:-postgresql://theatre_lab:replace-with-a-local-password@postgres:5432/theatre_lab} DATABASE_URL: ${DATABASE_URL:-postgresql://theatre_lab:replace-with-a-local-password@db:5432/theatre_lab}
DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:-replace-with-a-long-random-development-key} DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:-replace-with-a-long-random-development-key}
DJANGO_DEBUG: ${DJANGO_DEBUG:-true} DJANGO_DEBUG: ${DJANGO_DEBUG:-true}
DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,backend,azionelab.org} DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,backend,azionelab.org}
@@ -34,7 +38,7 @@ services:
ports: ports:
- "127.0.0.1:8000:8000" - "127.0.0.1:8000:8000"
depends_on: depends_on:
postgres: db:
condition: service_healthy condition: service_healthy
healthcheck: healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health/', timeout=2)"] test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health/', timeout=2)"]
+4
View File
@@ -33,6 +33,10 @@ development.
`PUBLIC_CMS_API_URL` must be reachable by Astro; within Compose it is `PUBLIC_CMS_API_URL` must be reachable by Astro; within Compose it is
`http://backend:8000`. `http://backend:8000`.
The PostgreSQL Compose service is `db`, so new `DATABASE_URL` values use `db:5432`.
The internal `postgres` alias is retained only for compatibility with existing local
`.env` files and should not be used in new configuration.
The local virtual host is HTTP-only. Production must publish NGINX through the intended The local virtual host is HTTP-only. Production must publish NGINX through the intended
network interface, configure DNS for `azionelab.org`, terminate TLS, and prevent direct network interface, configure DNS for `azionelab.org`, terminate TLS, and prevent direct
external access to application ports. external access to application ports.
+2 -2
View File
@@ -5,7 +5,7 @@
```bash ```bash
docker compose up --build -d docker compose up --build -d
docker compose ps docker compose ps
docker compose logs -f proxy backend frontend postgres docker compose logs -f proxy backend frontend db
docker compose down docker compose down
``` ```
@@ -33,7 +33,7 @@ Back up the database and media at the same logical point in time:
```bash ```bash
mkdir -p backups/media mkdir -p backups/media
docker compose stop frontend backend docker compose stop frontend backend
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > backups/database.sql docker compose exec -T db sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > backups/database.sql
docker compose cp backend:/app/media/. backups/media/ docker compose cp backend:/app/media/. backups/media/
docker compose start backend frontend docker compose start backend frontend
``` ```
+1 -1
View File
@@ -4,7 +4,7 @@
1. Check `docker compose ps` and the backend health status. 1. Check `docker compose ps` and the backend health status.
2. Request `http://azionelab.org:8080/api/site/home/` through NGINX. 2. Request `http://azionelab.org:8080/api/site/home/` through NGINX.
3. Inspect `docker compose logs backend postgres`. 3. Inspect `docker compose logs backend db`.
4. Verify `PUBLIC_CMS_API_URL` resolves from the frontend container. 4. Verify `PUBLIC_CMS_API_URL` resolves from the frontend container.
5. Restart the frontend after recovery so its static page is rebuilt from CMS data. 5. Restart the frontend after recovery so its static page is rebuilt from CMS data.