diff --git a/compose.dev.yml b/compose.dev.yml new file mode 100644 index 0000000..800a907 --- /dev/null +++ b/compose.dev.yml @@ -0,0 +1,70 @@ +name: lmnp-dev + +services: + mongodb: + image: mongo:8.0 + restart: unless-stopped + 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 + 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 + 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: diff --git a/compose.yml b/compose.yml index 93ef691..84a51f3 100644 --- a/compose.yml +++ b/compose.yml @@ -1,7 +1,9 @@ +name: lmnp-prod + services: mongodb: image: mongo:8.0 - container_name: lmnp-mongodb + restart: unless-stopped entrypoint: - /bin/bash - -c @@ -12,11 +14,9 @@ services: 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 + 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 @@ -39,14 +39,12 @@ services: build: context: ./backend dockerfile: Dockerfile - container_name: lmnp-backend - ports: - - "8080:8080" + restart: unless-stopped 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} + 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 volumes: - attachment_data:/data/attachments @@ -58,7 +56,7 @@ services: build: context: ./frontend dockerfile: Dockerfile - container_name: lmnp-frontend + restart: unless-stopped ports: - "80:80" depends_on: @@ -68,7 +66,3 @@ volumes: mongodb_data: mongodb_config: attachment_data: - -networks: - default: - name: lmnp-net