Home Up PDF Prof. Dr. Ingo Claßen
Infrastruktur - ADBKT

Vorbemerkung

Alle Zugriffe nur im Intranet. An der HTW oder über VPN.

Arbeiten mit dem Portainer

Einloggen

  • Host, Userid und Passwort werden in der LV bekannt gegeben
  • URL: https://aaa.f4.htw-berlin.de:9443/

Environment “local” auswählen

  • Auf "local" klicken
  • Dashboard wird angezeigt

Netzwerk

  • In der Navigationsleiste links auf "Networks" klicken
  • Auf Button "Add network" klicken
  • Name adbkt eintragen
  • Subnetz 172.28.0.0/16 eintragen

Stack anlegen

  • Stacks entsprechen docker-compose
  • In der Navigationsleiste links auf "Stacks" klicken
  • Auf Button "Add stack" klicken
  • Docker-Compose-Code in Web-Editor eingeben
  • Auf "Deploy the stack" klicken

Ubuntu Toolchain (ubu-tc)

Container erstellen

networks:
  adbkt:
    external: true

services:
  ubu-tc:
    container_name: ubu-tc
    image:  iclassen/ubu-tc
    user: du
    stdin_open: true 
    tty: true
    ports:
      - "20022:22"
      - 8888:8888
    networks:
      - adbkt
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - homedu:/home/du
volumes:
  homedu:

Passwort ändern

  • Terminal im Container öffnen
  • su / changeit
  • passwd
  • passwd du

SSH-Dämon starten

  • service ssh start

Mit SSH verbinden / Remote VS Code

  • In .ssh/config eintragen
     Host ubu_tc_widb0xx
      HostName widb0xxl.f4.htw-berlin.de
      User du
      Port 20022
  • ssh ubu_tc_widb0xx
  • Remote VS Code öffnen
  • Einloggen über Public SSH-key
    cat id_ed25519.pub | ssh ubu_tc_widb0xx "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Postgres

Postgres Compose

Achtung: Passwort eintragen.

networks:
  adbkt:
    external: true
   
services:
  pg:
    container_name: pg
    image: postgres:latest
    restart: unless-stopped
    # shm_size: 1g
    environment:
      POSTGRES_PASSWORD: #<-- hier Passwort eintragen
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - data:/var/lib/postgresql/data

    networks:
      - adbkt
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
      interval: 5s
      timeout: 5s
      retries: 3
      
volumes:
  data:

Postgres Container verwalten

  • Compose-File-Verzeichnis: /home/du/adbkt1/docker
  • Compose-File: pg.yaml
  • Container erzeugen: xupg
  • Container löschen: xdpg
  • Container anzeigen: dcls

PGConsole Compose

Achtung: Passwort eintragen.

networks:
  adbkt:
    external: true
   
services:
  pgconsole:
    container_name: pgconsole
    image: pgplex/pgconsole
    ports:
      - 9876:9876
    networks:
      - adbkt
    configs:
      - source: pgconsole_config
        target: /etc/pgconsole.toml
      
configs:
  pgconsole_config:
    content: |
      [[connections]]
      id = "pg"
      name = "pg"
      host = "pg"
      port = 5432
      database = "postgres"
      username = "postgres"
      password = "" #<-- hier Passwort eintragen

PGConsole Container verwalten

  • Compose-File-Verzeichnis: /home/du/adbkt1/docker
  • Compose-File: pgconsole.yaml
  • Container erzeugen: xuconsole
  • Container löschen: xdconsole
  • Container anzeigen: dcls

Auf PGConsole zugreifen

  • URL: http://aaa.f4.htw-berlin.de:9876
  • aaa durch den richtigen Hostnamen ersetzen
  • select table_name from information_schema.tables;

Per psql auf Postgres zugreifen

  • In ubu-tc
  • psql -U postgres -h pg
  • Passwort aus Compose-File verwenden
  • select table_name from information_schema.tables;

Python

Per Python auf Postgres zugreifen

  • Python-File-Verzeichnis: /home/du/adbkt1/python
  • Python-File: pg-test.py
  • Umgebung aktivieren: source /home/du/.py/bin/activate
  • in Python-Verzeichnis wechseln
  • Python-File ausführen: python pg-test.py
import psycopg

conninfo = " ".join([
"user='postgres'",
"password=''",   #<-- hier Passwort eintragen
"host='pg'",
"port=5432",
"dbname='postgres'"])

sql1 = "drop table if exists kv"
sql2 = """
create table kv (
  k integer not null,
  v varchar not null
)
"""
sql3 = "insert into kv values (1, 'hallo'), (2, 'hi')"

with psycopg.connect(conninfo) as conn:
    conn.execute(sql1)
    conn.execute(sql2)
    conn.execute(sql3)

sql = "select * from kv"
with psycopg.connect(conninfo) as conn:
    rs = conn.execute(sql).fetchall()

print(rs)

Python Bibliotheken installieren

  • uv pip install -U <package-name>
  • Achtung: Immer uv vor pip verwenden

JupyterLab starten

Nur notwendig wenn VS Code nicht verwendet wird

  • Server starten: jupyter notebook --ip='*' --port=8888 --no-browser &
  • URL: http://aaa.f4.htw-berlin.de:8888/lab
  • aaa durch den richtigen Hostnamen ersetzen
  • Token anzeigen: jupyter notebook list
  • Ggfs Token eingeben
  • Server mit zweimal Ctrl-C beenden