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} LMNP_ATTACHMENT_STORAGE_PATH: /data/attachments JAVA_TOOL_OPTIONS: -XX:MaxRAMPercentage=55 volumes: - attachment_data:/data/attachments 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: