Docker CompreFace Probleme?

denjo

New member
Hallo, ich bin neu in der Docker Materie. Ich möchte eine Gesichtserkennung realisieren.

https://github.com/exadel-inc/CompreFace

leider kann ich den stack von CompreFace nicht erstellen, ich bekomme immer folgende fehler meldung:

Code:
Failed to deploy a stack: time="2024-12-20T16:14:46Z" level=warning msg="/data/compose/7/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion" Network compreface_default Creating Network compreface_default Created Container compreface-postgres-db Creating Container compreface-core Creating Container compreface-postgres-db Created Container compreface-api Creating Container compreface-core Created Container compreface-api Created Container compreface-admin Creating Container compreface-admin Created Container compreface-ui Creating Container compreface-ui Created Container compreface-postgres-db Starting Container compreface-core Starting Container compreface-postgres-db Started Container compreface-api Starting Container compreface-core Started Container compreface-api Started Container compreface-admin Starting

ich habe alle Syteme auf dem neusten Stand und mein Docker läuft in einer CT unter Proxmox.

Vielleicht weiß ja jemand Rat, ich habe keine ideen mehr woran es liegen kann

1734711300211.png


Dazu kommt noch diese Einstellung bei mir auch nicht vielleicht hat das ja einen zusammenhang, da bekomme ich folgende meldung:

Code:
Failure
Get "https://192.168.178.78:9001/ping": dial tcp 192.168.178.78:9001: connect: connection refused


1734711920015.png
 

Anhänge

  • Screenshot 2024-12-20 044217.jpg
    Screenshot 2024-12-20 044217.jpg
    245,8 KB · Aufrufe: 2
Zuletzt bearbeitet:
Die erste Meldung sieht dann leserlich so aus:
Code:
Failed to deploy a stack: time="2024-12-20T16:14:46Z"
level=warning msg="/data/compose/7/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
Network compreface_default Creating Network compreface_default Created
Container compreface-postgres-db Creating
Container compreface-core Creating
Container compreface-postgres-db Created
Container compreface-api Creating
Container compreface-core Created
Container compreface-api Created
Container compreface-admin Creating
Container compreface-admin Created
Container compreface-ui Creating
Container compreface-ui Created
Container compreface-postgres-db Starting
Container compreface-core Starting
Container compreface-postgres-db Started
Container compreface-api Starting
Container compreface-core Started
Container compreface-api Started
Container compreface-admin Starting

Entweder ist das nicht komplett oder compreface-admin ist (noch) nicht gestartet.
Das Version-Attribut (Zeile 1 der docker-compose.yml) kannst Du löschen, dann taucht schon mal die Warnung ganz am Anfang nicht mehr auf. Das ist aber nicht das eigentliche Problem.

Hast Du die docker-compose.yml manuell angepasst, da wo $irgendwas steht, oder wird das bei der Installation abgefragt?


Der zweite von Dir angesprochene Teil bezieht sich auf Portainer, eine Docker-GUI, typischerweise erreichbar unter IP:9000 oder IP:9443, wenn man die klassischen Installationen befolgt, die ich kenne, z.B.

Bash:
sudo docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Bei Dir ist der Portainer in Deiner Installation auf 9001 umgebogen (-p 9001:9001), warum? Welche Anleitung hast Du da befolgt?
Die Portainer-Oberfläche erreichst Du aber, sonst hättest Du den Stack für compreface nicht anlegen können?
 
Zuletzt bearbeitet:
Den TCP Tunnel über Port 8000 kann man weglassen, wenn man den nicht unbedingt benötigt; ich habe den beispielsweise nicht auf allen Installationen mit dabei.
 
Also ich bin echt neu in dem Docker Thema, bitte nicht steinigen.
das ist die komplette meldung:

Code:
Failed to deploy a stack: Network compreface_default 
Creating Network compreface_default 
Created Container compreface-core 
Creating Container compreface-postgres-db 
Creating Container compreface-postgres-db 
Created Container compreface-api 
Creating Container compreface-core 
Created Container compreface-api 
Created Container compreface-admin 
Creating Container compreface-admin 
Created Container compreface-ui 
Creating Container compreface-ui 
Created Container compreface-core 
Starting Container compreface-postgres-db 
Starting Container compreface-postgres-db 
Started Container compreface-api 
Starting Container compreface-core 
Started Container compreface-api 
Started Container compreface-admin 
Starting Container compreface-admin 
Started Container compreface-ui 
Starting Error response from daemon: driver failed programming external connectivity on endpoint compreface-ui (ff79314d193f415ead3994385cc264ab071db60603b70a0c4006beb63f520316): Bind for 0.0.0.0:8000 failed: port is already allocated

ich habe die Docker Anelietung befolgt von der offizellen website, ich habe es auch schon über proxmox helper script installiert da war das selbe problem.

das ist die yaml und da habe ich nichts geändert, ich habe nur den speicher pfad erstellt:

Code:
version: '3.4'

volumes:
  postgres-data:

services:
  compreface-postgres-db:
    image: ${registry}compreface-postgres-db:${POSTGRES_VERSION}
    restart: always
    container_name: "compreface-postgres-db"
    environment:
      - POSTGRES_USER=${postgres_username}
      - POSTGRES_PASSWORD=${postgres_password}
      - POSTGRES_DB=${postgres_db}
    volumes:
      - postgres-data:/var/lib/postgresql/data

  compreface-admin:
    restart: always
    image: ${registry}compreface-admin:${ADMIN_VERSION}
    container_name: "compreface-admin"
    environment:
      - POSTGRES_USER=${postgres_username}
      - POSTGRES_PASSWORD=${postgres_password}
      - POSTGRES_URL=jdbc:postgresql://${postgres_domain}:${postgres_port}/${postgres_db}
      - SPRING_PROFILES_ACTIVE=dev
      - ENABLE_EMAIL_SERVER=${enable_email_server}
      - EMAIL_HOST=${email_host}
      - EMAIL_USERNAME=${email_username}
      - EMAIL_FROM=${email_from}
      - EMAIL_PASSWORD=${email_password}
      - ADMIN_JAVA_OPTS=${compreface_admin_java_options}
      - MAX_FILE_SIZE=${max_file_size}
      - MAX_REQUEST_SIZE=${max_request_size}B
    depends_on:
      - compreface-postgres-db
      - compreface-api

  compreface-api:
    restart: always
    image: ${registry}compreface-api:${API_VERSION}
    container_name: "compreface-api"
    depends_on:
      - compreface-postgres-db
    environment:
      - POSTGRES_USER=${postgres_username}
      - POSTGRES_PASSWORD=${postgres_password}
      - POSTGRES_URL=jdbc:postgresql://${postgres_domain}:${postgres_port}/${postgres_db}
      - SPRING_PROFILES_ACTIVE=dev
      - API_JAVA_OPTS=${compreface_api_java_options}
      - SAVE_IMAGES_TO_DB=${save_images_to_db}
      - MAX_FILE_SIZE=${max_file_size}
      - MAX_REQUEST_SIZE=${max_request_size}B
      - CONNECTION_TIMEOUT=${connection_timeout:-10000}
      - READ_TIMEOUT=${read_timeout:-60000}

  compreface-fe:
    restart: always
    image: ${registry}compreface-fe:${FE_VERSION}
    container_name: "compreface-ui"
    ports:
      - "8000:80"
    depends_on:
      - compreface-api
      - compreface-admin
    environment:
      - CLIENT_MAX_BODY_SIZE=${max_request_size}
      - PROXY_READ_TIMEOUT=${read_timeout:-60000}ms
      - PROXY_CONNECT_TIMEOUT=${connection_timeout:-10000}ms

  compreface-core:
    restart: always
    image: ${registry}compreface-core:${CORE_VERSION}
    container_name: "compreface-core"
    environment:
      - ML_PORT=3000
      - IMG_LENGTH_LIMIT=${max_detect_size}
      - UWSGI_PROCESSES=${uwsgi_processes:-2}
      - UWSGI_THREADS=${uwsgi_threads:-1}
    healthcheck:
      test: curl --fail http://localhost:3000/healthcheck || exit 1
      interval: 10s
      retries: 0
      start_period: 0s
      timeout: 1s
 

Anhänge

  • 1734715254944.png
    1734715254944.png
    213,7 KB · Aufrufe: 4
Zuletzt bearbeitet:
Bei compreface-fe (container_name: "compreface-ui") wird Port 8000 auf Port 80 gemappt. Der Fehlermeldung nach ist in Deinem System Port 8000 aber nicht mehr verfügbar. Versuch' mal, den auf 8080 zu mappen, also
YAML:
  ports:
    - "8080:80"

Ansonsten finde ich etwas riskant, postgres ohne Angabe einer konkreten Versionsnummer im Stack zu hinterlegen, falls das nicht über die Variablen schon irgendwo geschehen ist. Beim nächsten Update des Stacks wird da sonst unter Umständen postgres:latest eingespielt (also jeweils die neueste Version) und nichts geht mehr, weil postgres Datenbanken keine Versionswechsel mögen (da muß vorher der Inhalt exportiert und danach wieder importiert werden).
Ich habe mir jetzt nicht das ganz git Projekt angesehen, ob da irgendwo konkrete Werte hinterlegt sind.

Edit: o.k. ich sehe gerade, daß im .env file die postgres Version festgelegt ist:

Code:
registry=exadel/
postgres_username=postgres
postgres_password=postgres
postgres_db=frs
postgres_domain=compreface-postgres-db
postgres_port=5432
email_host=smtp.gmail.com
email_username=
email_from=
email_password=
enable_email_server=false
save_images_to_db=true
compreface_api_java_options=-Xmx4g
compreface_admin_java_options=-Xmx1g
max_file_size=5MB
max_request_size=10M
max_detect_size=640
uwsgi_processes=2
uwsgi_threads=1
connection_timeout=10000
read_timeout=60000
ADMIN_VERSION=1.2.0
API_VERSION=1.2.0
FE_VERSION=1.2.0
CORE_VERSION=1.2.0
POSTGRES_VERSION=1.2.0
 
Zuletzt bearbeitet:
ja jetzt hat es geklappt mit port 8080, das andere was du meinst kann ich nichts zu sagen "wie gesagt anfänger"

macht die Port änderung jetzt irgendwelche Probleme?
 
Nein, das ändert nur den Port, unter dem das Ganze von extern erreicht werden kann. Intern (also im Container) wird da ohnehin Port 80 angesteuert.
 
dann kommen solche Fragen nicht mehr auf
Die Lernkurve bei Docker ist anfangs etwas steil, weil man konzeptionell anders denken muß als bei der simplen Installation eines Programmes aus einer .dmg, einer .exe oder einer .msi. Jeder Container ist eine abgeschlossene Umgebung, die nach außen nur über gemappte Verzeichnisse und gemappt Ports kommuniziert.
 
Die Lernkurve bei Docker ist anfangs etwas steil
Naja, ich sag mal "je nachdem" (wie man es sich selbst erklärt). Für mich waren diese Docker-internen Netze erstmal recht komisch, aber wenn man da einfach sagt "Das ist wie nochmal ein Router mit Netzwerken dahinter, wie der Router bei Dir Zuhause" und das ganze dann ergänzt mit "Wenn Du von extern ran willst, musst Du ja vorher auch eine Portweiterleitung machen..." (IPv4-Kontext), dann kann man das - wie ich finde - eigentlich schon recht schnell verstehen. Problematisch wird es allerdings, wenn man noch nichtmals weiss, was ein Port eigentlich ist und wofür so ein Port eigentlich gut ist ☺️

Ich weiss, so ticken bei weitem nicht alle, aber ich schau mir gern mal kurz Dinge an und wenn ich der Meinung bin, dass das etwas taugen könnte, dann kaufe ich mir auch einfach mal ein "Buch" ( -> "Alter Mann am A****!" 🤪 (RED)). Damit kann man sich dann erstmal auf die Couch hauen und sich schön in aller Ruhe einen Überblick verschaffen, ohne gleich alles kaputt zu machen, oder einfach nur total gefrustet aufzugeben. Wenn man dann der Meinung ist, dass man es halbwegs kapiert hat, geht es frisch ans Werk. Vorteil bei einem Buch? Es wird oftmals auch auf mögliche Fehler-Szenarien hingewiesen und wie man sie verhindern kann bzw. was die Gründe dafür sein können. Das aber nur mal so am Rande und nein, ein Docker-Buch hab ich mir auch noch nicht gekauft, allerdings hatte ich kurzzeitig darüber nachgedacht, mir sowas zu Weihnachten unter den Baum zu legen 😅
 
ein Docker-Buch hab ich mir auch noch nicht gekauft, allerdings hatte ich kurzzeitig darüber nachgedacht, mir sowas zu Weihnachten unter den Baum zu legen 😅
Tu es nicht @blurrrr :)

Ich kann jeder/jedem dieses hervorragende Training zum Selbststudium https://container.training/intro-selfpaced.yml.html empfehlen. Ich hatte in meinem Leben schon zwei Docker Schulungen und beide waren nicht halb so gut wie der Foliensatz.

Auch wenn es mit über 800 Folien erstmal nach viel aussieht: die meisten Folien sind schnell verdaut. Nur bei den Hands-on Sachen braucht es dann etwas länger - diese sollte man unbedingt machen, damit auch was hängen bleibt.
 
Zuletzt bearbeitet:
Also soweit läuft bei mir alles, hab noch ein kleines Problem.
Eigentlich ist das glaub ich nicht eurer Thema aber fragen kostet ja nix.

ich habe unter Docker für die Gesichtserkennung Double-Take am laufen

https://github.com/jakowenko/double-take

irgendwie hat das tool ab und an Aussetzer und eine Fehler Meldungen dann.
Im Bild mit 1. gekennzeichnet sehe ich es wenn die grünen Status Lampen kurz weiß werden und dann kommt die Fehlermeldung kurz das mit 2.
Es läuft nach kurzer zeit wieder aber ist halt unschön.

1734722016371.png
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.933
Beiträge
57.858
Mitglieder
5.904
Neuestes Mitglied
Jarmen
Zurück
Oben