nuts-foundation/nuts-node

View on GitHub
e2e-tests/browser/openid4vp_employeecredential/docker-compose.yml

Summary

Maintainability
Test Coverage
services:
  nodeA-backend:
    image: "${IMAGE_NODE_A:-nutsfoundation/nuts-node:master}"
    environment:
      NUTS_CONFIGFILE: /opt/nuts/nuts.yaml
    ports:
      - 18081:8081
    volumes:
      - "./config/nuts.yaml:/opt/nuts/nuts.yaml"
      - "./config/policy/:/opt/nuts/policy:ro"
      # did:web resolver uses the OS CA bundle, but e2e tests use a self-signed CA which can be found in truststore.pem
      # So we need to mount that file to the OS CA bundle location, otherwise did:web resolving will fail due to untrusted certs.
      - "../../tls-certs/truststore.pem:/etc/ssl/certs/Nuts_RootCA.pem:ro"
    healthcheck:
      interval: 1s # Make test run quicker by checking health status more often
  nodeA:
    image: nginx:1.25.1
    ports:
      - "443"
    volumes:
      - "../../shared_config/nodeA-http-nginx.conf:/etc/nginx/conf.d/nuts-http.conf:ro"
      - "../../tls-certs/nodeA-certificate.pem:/etc/nginx/ssl/server.pem:ro"
      - "../../tls-certs/nodeA-certificate.pem:/etc/nginx/ssl/key.pem:ro"
      - "../../tls-certs/truststore.pem:/etc/nginx/ssl/truststore.pem:ro"
  nodeB-backend:
    image: "${IMAGE_NODE_B:-nutsfoundation/nuts-node:master}"
    environment:
      NUTS_CONFIGFILE: /opt/nuts/nuts.yaml
      NUTS_URL: "https://nodeB"
    ports:
      - 28081:8081
    volumes:
      - "./config/nuts.yaml:/opt/nuts/nuts.yaml"
      - "./config/policy/:/opt/nuts/policy:ro"
      # did:web resolver uses the OS CA bundle, but e2e tests use a self-signed CA which can be found in truststore.pem
      # So we need to mount that file to the OS CA bundle location, otherwise did:web resolving will fail due to untrusted certs.
      - "../../tls-certs/truststore.pem:/etc/ssl/certs/Nuts_RootCA.pem:ro"
    healthcheck:
      interval: 1s # Make test run quicker by checking health status more often
  nodeB:
    image: nginx:1.25.1
    ports:
      - "443"
    volumes:
      - "../../shared_config/nodeB-http-nginx.conf:/etc/nginx/conf.d/nuts-http.conf:ro"
      - "../../tls-certs/nodeB-certificate.pem:/etc/nginx/ssl/server.pem:ro"
      - "../../tls-certs/nodeB-certificate.pem:/etc/nginx/ssl/key.pem:ro"
      - "../../tls-certs/truststore.pem:/etc/nginx/ssl/truststore.pem:ro"
  chrome-headless-shell:
    image: chromedp/headless-shell:125.0.6422.142
    ports:
      - 9222:9222
    # Copied the entrypoint from the image's Dockerfile (https://github.com/chromedp/docker-headless-shell/blob/master/Dockerfile)
    # and added "--ignore-certificate-errors" to ignore self-signed certs in the e2e tests.
    # Otherwise, it fails with:
    #   page load error net::ERR_CERT_AUTHORITY_INVALID
    entrypoint: [ "/headless-shell/headless-shell", "--no-sandbox", "--use-gl=angle", "--use-angle=swiftshader", "--remote-debugging-address=0.0.0.0", "--remote-debugging-port=9222", "--ignore-certificate-errors" ]