Dies ist ein Memo, da Sie eine Python-Umgebung in einem Docker-Container mit der Erweiterung Remote-Container von VSCode erstellen können.
Es gibt zwei Zwecke.
Das erste ist, dass die lokale Umgebung sauber ist. Es gibt Dinge wie Pyenv und Anaconda, die die Umgebung verändern, aber am Ende wird es lokal abhängig. Was ist die Python-Version, auch wenn ich Anforderungen stelle? Ich weiß nicht, ob es ein Befehl ist, ich kann ihn aus irgendeinem Grund nicht eingeben, ich kann Pip und Conda nicht mischen und manchmal weiß ich nicht, was es ist, aber ich habe das Gefühl, ich möchte meinen Abschluss machen.
Der zweite ist einfach bereitzustellen. Heutzutage berechne und biete ich manchmal Dienste in der Cloud anstatt auf dem lokalen PC an, daher möchte ich dies mit ein paar "Dockerfile" tun.
Das ist der Grund, warum Sie diese nicht sofort erhalten, aber in diesem Artikel werde ich bis zum Einrichten einer Flasche mit Remote-Container aufzeichnen.
Ich habe die letzte Datei auf Github gelegt. yo16 / simple_flask
Endgültige Dateistruktur.
/simple_flask
/.devcontainer
Dockerfile
devcontainer.json
/simple_app
/templates
default.html
app.py
requirements.txt
Aber in diesem Artikel möchte ich Ihnen weder das Ergebnis noch den Inhalt der Erstellung mitteilen. Es handelt sich um eine Prozedur in VS Code, daher spielt es keine Rolle. Wenn Sie es satt haben, eine einfache Quelle für Flask zu erstellen, laden Sie diese bitte herunter und verwenden Sie sie.
Erstellen Sie einen Ordner, um diese Umgebung zu erstellen. Diesmal "simple_flask".
Dateistruktur bis zu diesem Punkt.
/simple_app
Alles ist in Ordnung, also werde ich eine einfache machen.
Dateistruktur bis zu diesem Punkt.
/simple_flask
/simple_app
/templates
default.html
app.py
Ich werde den Inhalt von Flask nicht erklären, aber app.py hat "app.run ()" und "@ app.route (" / ")". Wenn Sie diese python app.py
ausführen, wird die Flask-Site gestartet.
/ simple_flask
mit VS CodeKlicken Sie auf den grünen Bereich wie> <unten links im VS-Code
Wählen Sie "Remote-Container: Ordner im Container öffnen ..." aus den auf dem Bildschirm angezeigten.
Wählen Sie den Ordner "simple_flask" und öffnen Sie ihn
Wählen Sie "Python 3", wie es oben wieder angezeigt wird
Es wird wieder herauskommen, wählen Sie also die entsprechende Python-Version aus
Es wird wieder herauskommen, also ist es OK (dies ist das letzte) Übrigens, wenn Sie hier abhaken und selbst wenn 0 ausgewählt ist, wird etwas installiert, überprüfen Sie es also im späteren Verfahren.
Wenn Sie dies bisher tun können, wird der folgende Bildschirm angezeigt. Der Punkt ist der Linux-ähnliche Bildschirm am unteren rechten Terminal. (Ist es wirklich) Dies ist bereits im Docker-Container und Bash wird ausgeführt.
Wenn ich es dort versuche, sieht es so aus und "simple_app" ist ebenfalls fest platziert.
root@c249cd5c6b06:/workspaces/simple_flask# ls -la
total 4
drwxrwxrwx 1 root root 4096 Sep 26 14:49 .
drwxr-xr-x 3 root root 4096 Sep 26 13:54 ..
drwxrwxrwx 1 root root 4096 Sep 26 14:49 .devcontainer
drwxrwxrwx 1 root root 4096 Sep 26 14:08 simple_app
Python ist ebenfalls enthalten.
root@c249cd5c6b06:/workspaces/simple_flask# python -V
Python 3.8.5
Da das Docker-Image von Python in Schritt 3-4 ausgewählt wurde, ist Python enthalten, aber natürlich gibt es keine Flasche, da es sich im ursprünglichen Zustand befindet. Also werde ich es einfügen. Stellen Sie dies zuerst auf die Konsole.
root@c249cd5c6b06:/workspaces/simple_flask# pip install flask
Requirement already satisfied: flask in /usr/local/lib/python3.8/site-packages (1.1.2)
Requirement already satisfied: Werkzeug>=0.15 in /usr/local/lib/python3.8/site-packages (from flask) (1.0.1)
Requirement already satisfied: click>=5.1 in /usr/local/lib/python3.8/site-packages (from flask) (7.1.2)
Requirement already satisfied: itsdangerous>=0.24 in /usr/local/lib/python3.8/site-packages (from flask) (1.1.0)
Requirement already satisfied: Jinja2>=2.10.1 in /usr/local/lib/python3.8/site-packages (from flask) (2.11.2)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.8/site-packages (from Jinja2>=2.10.1->flask) (1.1.1)
Das ist in ... (Schweiß Nun, ich denke, dass ich vielleicht andere Dinge einbauen möchte, also werde ich in diesem Fall mit diesem Verfahren fortfahren, also werde ich mit dem Tag fortfahren, der nicht enthalten war.
Erstellen Sie als Nächstes die Datei require.txt, damit das aktuell enthaltene Modul beim Erstellen des Docker-Containers automatisch installiert wird.
root@c249cd5c6b06:/workspaces/simple_flask# pip freeze > requirements.txt
Auf diese Weise können Sie dies natürlich im Docker-Container tun, aber Sie können es auch auf VSCode tun. Sie können es normal mit VS Code öffnen, um es zu überprüfen und zu bearbeiten.
Verwenden Sie dies im nächsten Schritt.
Diejenige, die beim Erstellen eines Containers funktioniert, ist ". / Dockercontainer / Dockerfile".
Wenn Sie diese Datei mit VS-Code öffnen, sehen Sie verschiedene Dinge, die beim Öffnen des Docker-Containers funktionieren. (Ich benutze das Bild von Microsoft.)
Wie in Schritt 2-6 erläutert, muss hier "Node.js" installiert werden, unabhängig davon, ob es installiert ist oder nicht. Kommentieren Sie diesen Bereich aus und verwenden Sie "nodejs". Ich werde versuchen, es nicht zu tun. Sie benötigen die einfache Flasche in diesem Artikel nicht, aber wenn Sie sie benötigen, verwenden Sie sie.
Im Gegenteil, die in Schritt 4 erstellte Anforderung.txt wird nicht verwendet. Kommentieren Sie sie daher aus. Kopieren Sie es nach / tmp / pip-tmp /, pip install
und löschen Sie es, wenn Sie fertig sind.
Die modifizierte Docker-Datei befindet sich unten.
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.140.1/containers/python-3/.devcontainer/base.Dockerfile
# [Choice] Python version: 3, 3.8, 3.7, 3.6
ARG VARIANT="3"
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}
# [Option] Install Node.js
#### comment out
# ARG INSTALL_NODE="true"
# ARG NODE_VERSION="lts/*"
# RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
#### removed "#"
COPY requirements.txt /tmp/pip-tmp/
RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
&& rm -rf /tmp/pip-tmp
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
Erstellen Sie den Container mithilfe der geänderten Docker-Datei erneut.
Klicken Sie auf den grünen Bereich unten links
Wählen Sie im Pulldown-Menü oben die Option "Remote-Container: Container neu erstellen"
Das ist alles! Danke für deine harte Arbeit.
Wenn Sie app.py mit Python vom Terminal unten rechts aus starten, wird der übliche Flask-Server gestartet.
root@acebfd6333f5:/workspaces/simple_flask# python ./simple_app/app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Das ist es!
Recommended Posts