Docker images / prepare-release (push) Successful in 11s
Docker images / backend-test (push) Failing after 12s
Docker images / backend-image (push) Skipped
Docker images / frontend-image (push) Successful in 3m14s
Docker images / notify-webhook (push) Skipped
Docker images / updater-image (push) Successful in 47s
Docker images / publish-release (push) Skipped
JSON-колонки передаются строкой с приведением ::jsonb, иначе node-pg кодирует массивы как PostgreSQL array и ETL падает. Повтор импорта идёт, пока нет маркера. Том PG18 монтируется в /var/lib/postgresql. Co-authored-by: Cursor <[email protected]>
52 lines
1.3 KiB
YAML
52 lines
1.3 KiB
YAML
# Local PostgreSQL 18 for MikrotikManager (dev / ETL dry-run).
|
|
# copy env.postgres.example → deploy/.env.postgres
|
|
# docker compose -f deploy/docker-compose.postgres.yml --env-file deploy/.env.postgres up -d
|
|
|
|
services:
|
|
postgres:
|
|
image: ${POSTGRES_IMAGE_TAG:-postgres:18-alpine}
|
|
container_name: mmapp-postgres
|
|
restart: unless-stopped
|
|
shm_size: "256mb"
|
|
environment:
|
|
POSTGRES_USER: mmapp
|
|
POSTGRES_DB: mmapp
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
|
|
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C.UTF-8 --data-checksums"
|
|
TZ: UTC
|
|
PGTZ: UTC
|
|
command:
|
|
- postgres
|
|
- -c
|
|
- timezone=UTC
|
|
- -c
|
|
- listen_addresses=*
|
|
- -c
|
|
- max_connections=100
|
|
- -c
|
|
- shared_buffers=256MB
|
|
- -c
|
|
- work_mem=16MB
|
|
- -c
|
|
- maintenance_work_mem=128MB
|
|
- -c
|
|
- wal_compression=on
|
|
volumes:
|
|
# PostgreSQL 18+: VOLUME is /var/lib/postgresql (PGDATA = .../18/docker)
|
|
- mmapp-pgdata:/var/lib/postgresql
|
|
ports:
|
|
- "127.0.0.1:${POSTGRES_PORT:-5432}:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U mmapp -d mmapp"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
volumes:
|
|
mmapp-pgdata:
|