YAML Datei

Anschließend müssen wir in der YAML Datei die Web-App hinzufügen. Im Schritt 6 haben wir schon ein YAML File für JupyterHub erstellt. In diesem File fügen wir die Web-App hinzu.

nano /opt/WebApp/docker-compose.yml

Die komplette YAML Datei sieht dann so aus:

services:

    singlekursweb:
      image: guyq1997/singlecourse:latest
      command: /app/docker-entrypoint.sh
      volumes:
        - ./static_volume:/app/staticfiles
        - /opt/exchange_data/data_kurs_app:/app/data
        - ./db:/app/db
        #- ./app:/app/app
      environment:
        ALLOWED_HOSTS: domain_your_manager_node
        CSRF_TRUSTED_ORIGINS: domain_your_manager_node
      ports:
        - "8008:8008"
      networks:
        - jupyterhub_network
      deploy:
        placement:
          constraints:
            - node.role == manager
  
    jupyterhub:
  
      depends_on:
        - jupyterhub-database
  
      image: guyq1997/jupyterhub-dhbw:v5
  
      volumes:
        - "/var/run/docker.sock:/var/run/docker.sock:rw"
        - "./jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py"
        - "./forum_service.py:/srv/jupyterhub/forum_service.py"
        - "./idle_culler.py:/srv/jupyterhub/idle_culler.py"
        - "./jupyterhub-datavolume:/data"
        - "./forum-database/forumbase.db:/opt/forum-database/forumbase.db"
        - "/opt/exchange_data:/srv/ngshare"
  
      environment:
        DOCKER_NETWORK_NAME: jupyterhub_network
        POSTGRES_DB: jupyterhub
        POSTGRES_HOST: jupyterhub-database
        POSTGRES_PASSWORD: databrix
  
      ports:
        - "8000:8000"
  
      links:
        - jupyterhub-database
  
      networks:
        - jupyterhub_network
  
      command: >
      jupyterhub -f /srv/jupyterhub/jupyterhub_config.py

    deploy:
      placement:
        constraints:
          - node.role == manager

  jupyterhub-database:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_DB: jupyterhub
      PGDATA: /var/lib/postgresql/data
      POSTGRES_PASSWORD: databrix
    volumes:
      - "./database-volume:/var/lib/postgresql/data"
    networks:
      - jupyterhub_network

    deploy:
      placement:
        constraints:
          - node.role == manager


networks:
  jupyterhub_network:
    name: jupyterhub_network
    driver: overlay
    attachable: true