Files

79 lines
2.8 KiB
YAML

name: lmnp-dev
services:
mongodb:
image: mongo:8.0
restart: unless-stopped
ports:
- '${MONGO_PORT:-27017}:27017'
entrypoint:
- /bin/bash
- -c
- |
if [ ! -s /data/configdb/keyfile ]; then
umask 077
openssl rand -base64 756 > /data/configdb/keyfile
fi
chmod 400 /data/configdb/keyfile
exec docker-entrypoint.sh mongod --replSet rs0 --keyFile /data/configdb/keyfile --bind_ip_all
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME:-lmnp}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD:?Set MONGO_ROOT_PASSWORD to a URL-safe value}
volumes:
- mongodb_data:/data/db
- mongodb_config:/data/configdb
healthcheck:
test:
- CMD-SHELL
- >-
mongosh --quiet --host localhost
--username "$${MONGO_INITDB_ROOT_USERNAME}"
--password "$${MONGO_INITDB_ROOT_PASSWORD}"
--authenticationDatabase admin
--eval 'try { rs.status() } catch (error) { rs.initiate({_id: "rs0", members: [{_id: 0, host: "mongodb:27017"}]}) }; db.hello().isWritablePrimary'
| grep -q true
interval: 5s
timeout: 10s
retries: 10
start_period: 20s
backend:
build:
context: ./backend
dockerfile: Dockerfile
restart: unless-stopped
mem_limit: 1g
cpus: 2.0
ports:
- '${BACKEND_PORT:-8080}:8080'
environment:
SPRING_DATA_MONGODB_URI: mongodb://${MONGO_ROOT_USERNAME:-lmnp}:${MONGO_ROOT_PASSWORD:?Set MONGO_ROOT_PASSWORD to a URL-safe value}@mongodb:27017/lmnp?authSource=admin&replicaSet=rs0&directConnection=true
OIDC_ISSUER_URI: ${OIDC_ISSUER_URI:?Set OIDC_ISSUER_URI}
OIDC_CLIENT_ID: ${OIDC_CLIENT_ID:?Set OIDC_CLIENT_ID}
OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET:?Set OIDC_CLIENT_SECRET}
OIDC_ADMIN_ROLE: ${OIDC_ADMIN_ROLE:-admin}
LMNP_ATTACHMENT_STORAGE_PATH: /data/attachments
JAVA_TOOL_OPTIONS: -XX:MaxRAMPercentage=55
volumes:
- attachment_data:/data/attachments
- lease_document_data:/data/leases
depends_on:
mongodb:
condition: service_healthy
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
restart: unless-stopped
ports:
- '${FRONTEND_PORT:-8081}:80'
depends_on:
- backend
volumes:
mongodb_data:
mongodb_config:
attachment_data:
lease_document_data: