penpot/docker/devenv/docker-compose.infra.yml
Andrey Antukh 76a83387d9
⬆️ Update JVM, Node, pnpm and devenv dependencies (#12600)
Move the backend JDK to its latest maintenance build within Java 26 and
refresh the dependency versions pinned by hand in the development and
production images.

- Backend: Zulu JDK 26.0.2 to 26.0.2.1. The jlink module list keeps
  jdk.management, so the prometheus process metrics stay exported.
- Node.js 24.22.1 in .nvmrc, the development image tarball and the two
  plugins deploy workflows that pin it.
- pnpm 12.15.0 in the four Dockerfiles, the 34 packageManager fields and
  the eleven lockfiles.
- Development tools: clj-kondo 2026.10.20, Babashka 1.13.226, Pixi
  0.83.0, GitHub CLI 2.103.0, AWS CLI 2.38.5 and uv 0.13.5.
- Infra services: RustFS 1.0.3, Mailpit v1.32.0, and Valkey pinned to
  8.1.10 instead of the floating 8.1 tag.

Fix SERENA_UPDATE_VERSION in the compose file. A value there makes the
start script reinstall that Serena release on every start, overriding
the one baked into the image; it was replacing 1.7.0 with 1.6.1.

The hardened base image updates are left to Renovate.

Closes #12599

AI-assisted-by: deepseek-v4.1-flash

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2026-10-23 12:36:11 +02:00

124 lines
2.6 KiB
YAML

networks:
default:
name: penpot_shared
external: true
volumes:
postgres_data_pg18:
name: ${PENPOT_POSTGRES_DATA_VOLUME}
rustfs_data:
name: ${PENPOT_RUSTFS_DATA_VOLUME}
mailpit_data:
name: ${PENPOT_MAILPIT_DATA_VOLUME}
valkey_data:
name: penpotdev_valkey_data
services:
rustfs:
image: "rustfs/rustfs:1.0.3"
command: /data
volumes:
- "rustfs_data:/data"
environment:
- RUSTFS_ACCESS_KEY=${AWS_ACCESS_KEY_ID}
- RUSTFS_SECRET_KEY=${AWS_SECRET_ACCESS_KEY}
- RUSTFS_ADDRESS=:9000
- RUSTFS_CONSOLE_ADDRESS=:9001
- RUSTFS_CONSOLE_ENABLE=true
ports:
- "127.0.0.1:9000:9000"
- "127.0.0.1:9001:9001"
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:9000/health"]
interval: 1s
timeout: 5s
retries: 30
networks:
default:
aliases:
- rustfs
postgres:
image: postgres:18.6
command: postgres -c config_file=/etc/postgresql.conf
restart: always
stop_signal: SIGINT
environment:
- POSTGRES_INITDB_ARGS=--data-checksums
- POSTGRES_DB=penpot
- POSTGRES_USER=penpot
- POSTGRES_PASSWORD=penpot
volumes:
- ./files/postgresql.conf:/etc/postgresql.conf:z
- ./files/postgresql_init.sql:/docker-entrypoint-initdb.d/init.sql:z
- postgres_data_pg18:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 2s
timeout: 5s
retries: 30
networks:
default:
aliases:
- postgres
valkey:
image: valkey/valkey:8.1.10
restart: always
command: valkey-server --save 120 1 --loglevel warning
volumes:
- "valkey_data:/data"
networks:
default:
aliases:
- valkey
mailer:
image: axllent/mailpit:v1.32.0
restart: always
volumes:
- "mailpit_data:/data"
environment:
- MP_DATABASE=/data/mailpit.db
- MP_MAX_MESSAGES=5000
- MP_DISABLE_VERSION_CHECK=true
expose:
- '1025'
ports:
- "127.0.0.1:1080:8025"
healthcheck:
test: ["CMD", "wget", "--quiet", "--spider", "http://localhost:8025/readyz"]
interval: 2s
timeout: 5s
retries: 15
networks:
default:
aliases:
- mailer
# https://github.com/rroemhild/docker-test-openldap
ldap:
image: rroemhild/test-openldap:2.1
expose:
- '10389'
- '10636'
ports:
- "10389:10389"
- "10636:10636"
ulimits:
nofile:
soft: 1024
hard: 1024
networks:
default:
aliases:
- ldap