buhtz hat geschrieben: 08.09.2023 21:17:03
Ich wollte Docker nutzen, um ein eigenes Python Paket mal eben schnell mit einer anderen Python Version testen (pytest) zu können. Bin nicht sicher, aber mir scheint das ein guter Anwendungsfall zu sein.
Dem kann ich zustimmen.
Die nötigen Schritte beim Bauen und Starten des Containers sind IMHO also
- Das Verzeichnis mit dem Code in den Container "kopieren"
- Im Container die nötigen Tools nachinstallieren (z.b. pytest)
- Das Python Paket aus dem vorliegenden Verzeichnis per "pip install --editable ." installieren
- pytest ausführen
Das Verzeichnis brauchst Du nicht kopieren, sondern kannst es schlicht einhängen.
Ich würde da grundsätzlich gleich mit
docker-compose zusätzlich zu docker arbeiten. docker-compose enthält die ganzen Laufzeitdirektiven, die Du sonst alle als Parameter docker mitgeben musst:
Datei namens "Dockerfile":
Code: Alles auswählen
FROM python:3.8
RUN python3 -m pip install -e pytest -v
WORKDIR /buhtzology
CMD ["python3 -m pip install -e .", "pytest -v"]
Das passende "docker-compose.yml"
Code: Alles auswählen
version: '2'
services:
mypytest:
build: .
volumes:
- ./buhtzology:/buthzology
Diese beiden Dateien kopierst Du in ein Arbeitsverzeichnis auf dem Host, samt dem Datenverzeichnis "buhtzology".
Dann rufst Du auf:
Ohne docker-compose wäre das:
Code: Alles auswählen
docker build -t mypytest .
docker run --name=mypytest -v ./buhtzology:/buhtzology .
Wenn das nicht richtig ausführt und Du noch etwas anpassen musst, dann kannst Du
CMD 'bash -c "sleep 3600"' setzen und mit
docker exec -ti mypytest /bin/sh in den Container einsteigen und es manuell versuchen. /bin/bash habe ich dabei nicht verwendet, weil ich nicht weiss ob bash in Deinem Container installiert ist.
Code: Alles auswählen
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: \
Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=\
&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D\
&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=foobar&target=&ulimits=null&version=1": \
dial unix /var/run/docker.sock: connect: permission denied
Ich würde schon vermuten, dass da ein Berechtigungsproblem vorliegt, sonst würde das nicht kommen.