Als ich versuchte, Docker für PyCharm unter Windows 10 zu verwenden, war ich süchtig nach verschiedenen Dingen wie der Pfadauflösung. Notieren Sie sich dies. Es ist das Ergebnis von Versuch und Irrtum, daher kann es zusätzliche Schritte geben.
PyCharm hat 2017 nicht gut funktioniert.1. Informationen zu Personen, die nicht Windows oder Windows sind, aber Hyper-V nicht verwenden, finden Sie unter Verwenden von Docker für die Entwicklung mit PyCharm. Ich denke, es wäre gut, wenn es gemacht würde.
Bei Verwendung von Docker unter Windows gibt es Docker für Windows und Docker Toolbox, aber ** Docker Toolbox ** ist enthalten. Klicken Sie auf der folgenden Seite auf die Schaltfläche "Docker Toolbox für Windows herunterladen", um sie zu installieren.
https://docs.docker.com/toolbox/overview/
Zuerst habe ich Docker für Windows installiert, um Hyper-V zu verwenden, aber ich habe aufgegeben, weil ich den später beschriebenen Ordner "Zertifikate" nicht festlegen konnte [^ 1]. Ich habe auch Hyper-V mit Docker Toolbox verwendet.
Bitte aktivieren Sie Hyper-V unter Bezugnahme auf Folgendes. Hyper-V unter Windows 10 installieren
Erstellen Sie eine VM, indem Sie auf Folgendes verweisen. https://docs.docker.com/machine/drivers/hyper-v/
$ docker-machine create --driver hyperv --hyperv-memory 4096 --hyperv-cpu-count 4 default
Wenn der obige Befehl ausgeführt wird, wird eine VM mit den folgenden Einstellungen erstellt.
Elemente einstellen | option | Oben Beispiel |
---|---|---|
Treiber | --driver | hyperv |
Speicherkapazität | --hyperv-memory | 4096 |
Anzahl der CPUs | --hyperv-cpu-count | 4 |
Maschinenname | default |
Weitere Optionen und Details finden Sie unter dem obigen Link. Es scheint, dass der Einstellungswert dieses Bereichs später mit Hyper-V Manager geändert werden kann.
Die VM kann keine Verbindung zum externen Netzwerk herstellen. [Einführung in Docker Machine (für Hyper-V)](http://qiita.com/ohhara_shiojiri/items/801a24a2c94ff93be82d#hyper-v%E7%92%B0%E5%A2%83%E8%A8%AD%E5 Stellen Sie den virtuellen Switch und den Netzwerkadapter unter ** Einstellung der Hyper-V-Umgebung ** von% AE% 9A ein.
Vorsichtshalber in diesem Fall ** Stellen Sie sicher, dass sowohl das externe als auch das interne Netzwerk eingestellt sind. ** Wenn Sie nur das externe Netzwerk verwenden, ändert sich die Adresse, wenn Sie eine Verbindung zu einem anderen Netzwerk herstellen, und es funktioniert nicht.
Es sollte sich im folgenden Zustand befinden.
Nehmen Sie die folgenden Einstellungen vor, indem Sie auf die obige Seite verweisen.
Stellen Sie sicher, dass der freigegebene Ordner ** das Projekt enthält, das Sie entwickeln **. Der hier festgelegte Benutzername und das Kennwort werden im nächsten Abschnitt verwendet. (Das Hinzufügen von Benutzern ist möglicherweise nicht unbedingt erforderlich. Ich bin hier nicht sicher.)
Machen Sie den freigegebenen Windows-Ordner von der VM aus als CIFS zugänglich.
Installieren Sie zunächst cifs-utils auf der VM. Melden Sie sich mit docker-machine ssh
bei der VM an und gehen Sie wie folgt vor: (Referenz)
$ wget http://distro.ibiblio.org/tinycorelinux/5.x/x86/tcz/cifs-utils.tcz
$ tce-load -i cifs-utils.tcz
Hängen Sie dann den freigegebenen Ordner ein, indem Sie auf Folgendes verweisen. Bereitstellen und Verwenden von freigegebenen Windows-Ordnern von Ubuntu
Stellen Sie ein, dass es beim Neustart der VM automatisch bereitgestellt wird. Erstellen Sie auf der VM eine neue Datei / var / lib / boot2docker / bootlocal.sh mit den folgenden Inhalten.
bootlocal.sh
# /var/lib/boot2docker/Bei Speicherung im Docker-Wird ausgeführt, wenn die Maschine startet
ip addr add 172.29.32.2/20 dev eth0 #Stellen Sie eine feste IP-Adresse im selben Subnetz wie HostOS ein
uid=1000 #Docker-Benutzer
gid=50 #Mitarbeitergruppe
user=share #Benutzername darf unter HostOS geteilt werden
password=xxxxxxxxxxxx #Passwort des Benutzers, der das Teilen erlaubt hat
host_ip=//172.29.32.1 #HostOS IP-Adresse
mkdir -p /home/docker/src
mount -t cifs -o uid=${uid},gid=${gid},username=${user},password=${password} ${host_ip}/src /home/docker/src
Der Benutzer und das Kennwort hier sind diejenigen, die in "1.5. Erstellen eines freigegebenen Windows-Ordners" festgelegt sind.
host_ip
ist die IP-Adresse Ihres Windows-PCs. Geben Sie die IP-Adresse des internen Netzwerks an, damit diese nicht von Netzwerkänderungen betroffen ist. In meiner Umgebung war es im folgenden Zustand.
> ipconfig
Windows IP-Konfiguration
Ethernet-Adapter vEthernet(HNS Internal NIC) 2:
Verbindungsspezifisches DNS-Suffix. . . . .:
Verknüpfen Sie die lokale IPv6-Adresse. . . . .: fe80::68fe:336d:b69b:e392%24
IPv4-Adresse. . . . . . . . . . . .: 172.29.32.1 ★ Verwenden Sie dies als IP-Adresse von HostOS
Subnetzmaske. . . . . . . . . .: 255.255.240.0 ★ Dies ist für das Subnetz
Standard-Gateway. . . . . . .:
···Kürzung
Wie bereits erwähnt, stellen Sie die feste IP-Adresse in der folgenden Zeile ein, die im obigen Abschnitt "bootlocal.sh" beschrieben ist.
ip addr add 172.29.32.2/20 dev eth0 #Stellen Sie eine feste IP-Adresse im selben Subnetz wie HostOS ein
Die Subnetzmaske entspricht dem Ergebnis von "ipconfig" unter Windows. Von PyCharm aus greifen Sie auf die hier festgelegte IP-Adresse zu.
Es ist in Ordnung, wenn DOCKER_HOST
von docker-machine env
die hier angegebene IP-Adresse ist.
$ docker-machine env default
You can further specify your shell with either 'cmd' or 'powershell' with the --shell flag.
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://172.29.32.2:2376
SET DOCKER_CERT_PATH=C:\Users\uj\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
SET COMPOSE_CONVERT_WINDOWS_PATHS=true
Bereiten Sie Ihr Lieblingsbild vor. Ich habe es bekommen von: https://hub.docker.com/_/python/
> docker pull python:3.5
Schließlich werden wir die Einstellungen auf PyCharm eingeben.
Öffnen Sie den Einstellungsbildschirm unter "Datei> Einstellungen" und öffnen Sie "Erstellen, Ausführen, Bereitstellen> Docker". Geben Sie nach dem Hinzufügen durch Drücken der Taste + wie im folgenden Bildschirm gezeigt ein.
Engine API URL
: Wenn die in" 1.7. Festlegen einer festen IP-Adresse für die VM "angegebene IP-Adresse" ip_addr "lautet, geben Sie sie als" https: // $ {ip_addr}: 2376 "ein. Es muss mit der IP-Adresse von DOCKER_HOST
übereinstimmen. Es gab Informationen, dass das Protokoll TCP oder http war, aber es funktionierte nur, wenn es ** https ** war.Zertifikatsordner
: Gleicher Pfad wie DOCKER_CERT_PATH
in Docker-Machine Env
. Verwenden Sie hier den Schrägstrich ** anstelle des Schrägstrichs.Pfadzuordnungen
: Ich habe das Gefühl, dass standardmäßig etwas enthalten war, aber da die Einstellungen danach nicht funktionieren, ** werde ich alles löschen. ** **.Bei Erfolg wird in der Mitte des Fensters "Verbindung erfolgreich" angezeigt. Außerdem konnte dieser "Zertifikatsordner" in Docker für Windows nicht angegeben werden. [^ 1]
Öffnen Sie weiterhin "Projekt: Eigenes Projekt> Projektinterpreter" im Einstellungsbildschirm. Klicken Sie auf das Zahnradsymbol oben rechts im Fenster und stellen Sie es wie folgt ein.
Server
: Was wurde in" 2.1. Angeben einer VM "angegeben?Image name
: Vorbereitet in" 1.8. Vorbereitung des Docker-Images für Python "Python Interpreter Path
: Wie es istWenn Sie es gut einstellen und eine Weile warten können (3-4 Minuten?), Wird das gültige Paket mit dem angegebenen Bild angezeigt.
2.3. Run/Debug Configurations Nehmen Sie abschließend die Einstellungen für die Testausführung vor.
Wählen Sie in der Menüleiste "Ausführen> Konfigurationen bearbeiten", um den Bildschirm "Konfigurationen ausführen / debuggen" anzuzeigen. Drücken Sie die + -Taste und wählen Sie "Python-Tests> Unittests" (ich denke, Sie können für Unittests verwenden, was Sie möchten).
Das ist das komplizierteste. ** Es muss zwischen dem Pfad unter Windows und dem Pfad unter VM unterschieden werden **. Bitte lesen Sie den Pfad entsprechend Ihrer eigenen Umgebung.
In den folgenden Beispielen lautet der Projektpfad:
C:\Users\uj\src\github.com\ujiro99\auto_logger
Ziel
: Wählen Sie Pfad
mit dem Optionsfeld. Wählen Sie unter Pfad das Verzeichnis aus, in dem die Projekttestdatei gespeichert ist.Python-Interpreter
: Wählen Sie den unter" 2.2. Angeben des Projektinterpreters "ausgewählten Interpreter aus.Arbeitsverzeichnis
: ** Geben Sie den Projektpfad unter Windows an **.Path Mappings
:...
, um den Dialog anzuzeigen.Lokaler Pfad
** gibt den Pfad des Projekts unter Windows an.Docker Container Settings
:...
, um den Dialog anzuzeigen. Stellen Sie wie folgt ein.Volume Bindings
:>>
, um den Dialog anzuzeigen.Containerpfad
bei.Hostpfad
gibt den Pfad des ** Projekts auf der ** VM an.Wenn Sie die Einstellung "Pfadzuordnungen" in "2.1. Angeben einer VM" belassen, ** wird der Pfad ** unbeabsichtigt konvertiert und funktioniert nicht.
Nachdem Sie die Einstellungen bis zu diesem Punkt vorgenommen haben, können Sie den Test ausführen. Wenn Sie in diesem Beispiel die Testdateien unter "Projektpfad / Tests /" speichern und den Test ausführen, wird er wie folgt ausgeführt. Sie können auch Debugs ausführen und Haltepunkte verwenden.
Ich habe die Verwendung von PyCharm in der Docker-Umgebung (Hyper-V) vorgestellt. Um ehrlich zu sein, ist die Einstellung ziemlich problematisch, daher denke ich, dass es im Moment besser ist, die Python-Umgebung auf Local gehorsam zu verwalten. Ich freue mich auf die zukünftige Entwicklung von Jetbrans (oder Docker für Windows).
[^ 1]: Docker für Windows war möglicherweise in Ordnung, wenn Sie [docker-machine regenerate-certs
] ausgeführt haben (https://docs.docker.com/machine/reference/regenerate-certs/). Hmm.
Recommended Posts