version: '3' services: proxy: image: nginx:alpine restart: unless-stopped container_name: oa-rdepot-proxy labels: eu.openanalytics.rdepot.container.name: 'oa-rdepot-proxy' volumes: - ./docker/proxy/nginx.conf:/etc/nginx/nginx.conf:ro - ./docker/proxy/rdepot.conf:/etc/nginx/sites-enabled/rdepot:ro - repository:/opt/rdepot/repo/:ro - logs:/var/log/nginx/ depends_on: - backend - repo - frontend - keycloak ports: - ${RDEPOT_PORT:-80}:80 networks: oa-rdepot: aliases: - oa-rdepot-proxy backend: image: openanalytics/rdepot-app:2.6.1 restart: unless-stopped hostname: oa-rdepot-backend container_name: oa-rdepot-backend volumes: - ./docker/backend/application.yml:/opt/rdepot/application.yml - repositories:/opt/rdepot/repositories/ - snapshots:/opt/rdepot/generated/ - queue:/opt/rdepot/new/ depends_on: - db healthcheck: test: [ 'CMD-SHELL', 'if [ "$$(curl -I localhost:8080 2>/dev/null | grep HTTP/1.1 | cut -d" " -f2)" != "302" ]; then exit 1; else exit 0; fi;' ] interval: 10s timeout: 10s retries: 10 environment: - DB_URL=jdbc:postgresql://oa-rdepot-db:5432/rdepot - DB_USERNAME=rdepot - DB_PASSWORD=mysecretpassword - ALLOWED-ORIGIN=http://localhost:${RDEPOT_PORT:-80} networks: oa-rdepot: aliases: - oa-rdepot-backend db: image: postgres:alpine labels: eu.openanalytics.rdepot.container.name: 'oa-rdepot-db' restart: unless-stopped hostname: oa-rdepot-db container_name: oa-rdepot-db environment: - POSTGRES_PASSWORD=mysecretpassword - POSTGRES_DB=rdepot - POSTGRES_USER=rdepot networks: oa-rdepot: aliases: - oa-rdepot-db repo: image: openanalytics/rdepot-repo:2.6.1 restart: unless-stopped container_name: oa-rdepot-repo labels: eu.openanalytics.rdepot.container.name: 'oa-rdepot-repo' hostname: oa-rdepot-repo volumes: - repository:/opt/rdepot/ networks: oa-rdepot: aliases: - oa-rdepot-repo frontend: container_name: oa-rdepot-frontend build: context: . restart: unless-stopped labels: eu.openanalytics.rdepot.container.name: 'oa-rdepot-frontend' networks: oa-rdepot: aliases: - oa-rdepot-frontend environment: - VITE_LOGIN_SIMPLE=false - VITE_LOGIN_OIDC=true - VITE_URL_PREFIX=/ - VITE_SERVER_ADDRESS=http://localhost:${RDEPOT_PORT:-80}/backend - VITE_OIDC_AUTHORITY=http://localhost:${RDEPOT_PORT:-80}/keycloak/realms/RDepot - VITE_OIDC_CLIENT_ID=oa-rdepot-frontend - VITE_OIDC_REDIRECT_URI=http://localhost:${RDEPOT_PORT:-80}/auth - VITE_OIDC_POST_LOGOUT_REDIRECT_URI=http://localhost:${RDEPOT_PORT:-80}/logout - VITE_OIDC_RESPONSE_TYPE=code - VITE_OIDC_SCOPE=openid - VITE_ADDRESS_DEPRECATION_WARNING=false keycloak: image: keycloak/keycloak:24.0 restart: unless-stopped hostname: oa-rdepot-keycloak container_name: oa-rdepot-keycloak environment: - KC_FILE=/tmp/rdepot.json - KC_HTTP_RELATIVE_PATH=/keycloak - KC_PROXY_HEADERS=xforwarded - KC_HTTP_ENABLED=true - KEYCLOAK_ADMIN=admin - KEYCLOAK_ADMIN_PASSWORD=admin volumes: - ./docker/keycloak/realm-rdepot-vue.json:/opt/keycloak/data/import/rdepot.json:ro networks: oa-rdepot: aliases: - oa-rdepot-keycloak command: - start-dev - --import-realm ldap: build: ./docker/ldap restart: unless-stopped hostname: oa-rdepot-ldap container_name: oa-rdepot-ldap environment: - LDAP_TLS=false - LDAP_ORGANISATION=Test Company - LDAP_DOMAIN=example.org - LDAP_ADMIN_PASSWORD=testpassword networks: - oa-rdepot networks: oa-rdepot: ipam: config: - subnet: 192.168.49.0/24 volumes: repository: repositories: snapshots: queue: logs: