services: mongodb: image: mongo:8.0 container_name: lmnp-mongodb 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 ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: adminpassword 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 container_name: lmnp-backend ports: - "8080:8080" environment: SPRING_DATA_MONGODB_URI: mongodb://admin:adminpassword@mongodb:27017/lmnp?authSource=admin&replicaSet=rs0&directConnection=true OIDC_ISSUER_URI: ${OIDC_ISSUER_URI:-http://localhost:8090/realms/voidAuth} OIDC_CLIENT_ID: ${OIDC_CLIENT_ID:-lmnp-client} OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET:-lmnp-secret} LMNP_ATTACHMENT_STORAGE_PATH: /data/attachments volumes: - attachment_data:/data/attachments depends_on: mongodb: condition: service_healthy frontend: build: context: ./frontend dockerfile: Dockerfile container_name: lmnp-frontend ports: - "80:80" depends_on: - backend volumes: mongodb_data: mongodb_config: attachment_data: networks: default: name: lmnp-net