Proxy und Self-Sign Zertifikate in Docker hinterlegen

1. Zertifikate in Docker mounten

Um ein selbstsigniertes Zertifikat in einem Docker-Container verfügbar zu machen, müssen wir das Zertifikat vom Hostsystem in den Container mounten. Dies wird in der docker-compose.yml Datei wie folgt konfiguriert:

volumes:
 - "./conf/services/config.json.production:/etc/enginsight/server-m2/config.json"
  - "/pfad/auf/host/cert.pem:/etc/ssl/cert.pem"

Links: Pfad des root Zertifikats auf dem Server
Rechts: Pfad im Docker Container

2. Umgebungsvariable für Node.js setzen

Da Node.js nicht auf den System-Truststore zugreift, muss die Umgebungsvariable NODE_EXTRA_CA_CERTS gesetzt werden, um auf das Zertifikat zu verweisen:

environment:
  - NODE_EXTRA_CA_CERTS=/etc/ssl/cert.pem
- "./conf/services/config.json.production:/etc/enginsight/server-m2/config.json"

3. Integration einer Hostdatei

Docker nutzt nicht die Hostdatei des Systems, daher muss sie ebenfalls gemountet werden. Dies kann durch extra_hosts in der docker-compose.yml Datei geschehen:

extra_hosts:
  - "ngs-app.domain:10.4.0.21"

4. Proxy-Konfiguration

Sollte ein Proxy erforderlich sein, kann dieser in der Datei docker-compose.yml konfiguriert werden. Diese Datei sollte nach folgender Anleitung befüllt werden:

environment:
- HTTP_PROXY=http://proxy.url.de:port
- HTTPS_PROXY=http://proxyfürhttps.url.de:port
- NO_PROXY=.<domain>.de

5. Beispiel einer docker-compose.yml Datei

Hier ist ein vollständiges Beispiel einer docker-compose.yml Datei für den server-m2 Container:

version: '3.8'

services:
  server-m2:
    image: registry.enginsight.com/enginsight/server-m2:5.7.2
    extra_hosts:
      - "ngs-siem.domain.de:10.4.0.24"
      - "ngs-app.domain:10.4.0.21"
    networks:
      - redis
      - mongodb
    ports:
      - "82:8080"
    depends_on:
      - redis
      - mongodb
      - mongodb-setup
    restart: always
    environment:
    - HTTP_PROXY=http://proxy.de:8080
    - HTTPS_PROXY=http://proxy.de:8443
    - NO_PROXY=.proxy.de
      - NODE_EXTRA_CA_CERTS=/etc/ssl/cert.pem
    volumes:
      - "./conf/services/config.json.production:/etc/enginsight/server-m2/config.json"
      - "/etc/nginx/cert.pem:/etc/ssl/cert.pem"

networks:
  redis:
  mongodb: