Erstellen Sie eine Entwicklungsumgebung mit Jupyter und Flask mit Python in Docker (unterstützt sowohl VS Code als auch Code-Server).

Ich dachte, ich würde Python ein wenig verwenden, aber ich wollte nicht verschiedene Dinge installieren, um die Umgebung aufzubauen. Also habe ich versucht, mit Docker eine Umgebung zu erstellen.

Wir möchten eine Umgebung schaffen, in der Sie mit VS Code (oder Code-Server) sowohl in einer interaktiven Umgebung als auch im Web entwickeln können. Insbesondere war ich süchtig danach, die Python-Erweiterung von VS Code mit Jupyter zu verbinden, das unter Python in Docker ausgeführt wird. Daher werde ich in diesem Artikel einen Hinweis auf die Vorgehensweise beim Erstellen der Umgebung hinterlassen.

Bedarf

Erstellen Sie eine Entwicklungsumgebung, die all das kann.

Umgebung

Betrieb in der folgenden Umgebung bestätigt

Bauverfahren für die Umwelt

Schneiden Sie zuerst ein geeignetes Arbeitsverzeichnis aus.

$ mkdir python-dev && cd $_

Initialisieren Sie Git nach Ihren Wünschen.

$ git init .
$ wget https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore --output-document=.gitignore

Verwenden Sie Poetry für die Paketverwaltung. Beschreiben der Docker-Datei und der Datei docker-compose.yml zum Erstellen der Umgebung mit Poetry.

Dockerfile


FROM python:3.8.3-slim
WORKDIR /app

RUN pip install poetry

Geben Sie das Container-Image an, das die Version von Python enthält, die Sie verwenden möchten. In Zukunft werde ich das schlanke Image verwenden, da ich zunächst die Größe des Images reduzieren möchte, wobei ich bedenke, dass ich verschiedene abhängige Pakete im Image installieren möchte.

docker-compose.yml


version: '3.4'
services:
  web:
    build: .
    volumes:
      - .:/app
    environment:
      - FLASK_APP=index.py
    ports:
      - 127.0.0.1:5000:5000
    command: "poetry run flask run --host=0.0.0.0"
  note:
    build: .
    volumes:
      - .:/app
    ports:
      - 127.0.0.1:8888:8888
    command: "poetry run jupyter notebook --no-browser --ip=0.0.0.0 --port=8888 --allow-root --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.disable_check_xsrf=True"

Dieses Mal sind einige Einstellungen enthalten, um die Sicherheitsfunktion von Jupyter zu deaktivieren, damit Sie vom Host aus bequem auf Jupyter im Container zugreifen können.

Wenn Sie auf einem öffentlichen Server und nicht in der lokalen Umgebung Ihres Computers ausgeführt werden, sollten Sie diese Einstellung vermeiden.

Sobald der Docker fertig ist, richten Sie Poetry ein.

$ docker-compose run --rm web poetry init --no-interaction
$ docker-compose run --rm web poetry add jupyter notebook flask

Fügen Sie beim Erstellen von Docker einen Befehl zu "$ poet install" hinzu.

Dockerfile


FROM python:3.8.3-slim
WORKDIR /app

RUN pip install poetry
COPY pyproject.toml ./
RUN poetry install

Platzieren Sie index.py, um mit Flask zu starten.

index.py


from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"

Bauen und fertig.

$ docker-compose build

Wie benutzt man

Nach $ docker-compose up

Verwenden Sie Python in Docker mit VS-Code

Installieren Sie zunächst Folgendes in VS Code.

Wählen Sie den Zielcontainer mit der Docker-Erweiterung in VS Code aus und klicken Sie auf "Visual Studio-Code anhängen". image.png

Öffnen Sie das VSCode-Fenster für den Remotezugriff auf den Container und installieren Sie Python-Erweiterung (ms-python.python) "Auf Container installieren". Klicken Sie auf die Schaltfläche, um den VS-Code zu installieren und neu zu laden.

Erfolg, wenn der von VSCodes > Python: Select Interpreter usw. angezeigte Python der in Docker ist (in diesem Beispiel Python 3.8.3 in / usr / local / bin / python) ist.

image.png

Verwenden Sie Jupyter für VS-Code

Wählen Sie im VS-Code, der wie oben beschrieben an den Container angehängt ist, "Vorhanden" in "> Python: Lokalen oder Remote-Jupyter-Server für Verbindungen angeben" und geben Sie "http: // localhost: 8888 /" ein. Alternativ können Sie eine Datei mit dem Namen ".vscode / settings.json" erstellen.

json:.vscode/settings.json


{
  "python.dataScience.jupyterServerURI": "http://localhost:8888/"
}

Sie können Jupyter auf VSCode verwenden, indem Sie VSCode neu laden und > Python: Neues leeres Jupyter-Notizbuch erstellen ausführen.

image.png

Wenn Sie nach einem Passwort gefragt werden, geben Sie einfach die Eingabetaste mit Leerzeichen ein.

image.png

Verwenden Sie Python in Docker mit Code-Server

Wenn Sie anstelle von VSCode code \ -server verwenden, funktioniert dies im Browser. Insbesondere für Chromebooks funktioniert es daher problemlos in Chrome anstelle der Linux-GUI-Umgebung. Ich werde. Da erweiterte Funktionen wie Python in den Container aufgenommen werden können, besteht auch der Vorteil, dass sie für jede Entwicklungsumgebung codiert werden können.

Der Nachteil ist, dass die Bildkapazität zunimmt. (Benötigt zusätzliche 1 GB)

Um den Code-Server zu verwenden, erstellen Sie den Container mit dem Code-Server und den Erweiterungen.

Dockerfile


FROM python:3.8.3-slim AS python
WORKDIR /app

RUN pip install poetry
COPY pyproject.toml ./
RUN poetry install

FROM python AS code-server

RUN apt-get update && apt-get install -y curl
RUN curl -fsSL https://code-server.dev/install.sh | sh
RUN code-server \
  --install-extension ms-python.python \
  --install-extension ms-ceintl.vscode-language-pack-ja

Fügen Sie außerdem einen Dienst hinzu, der den Code-Server startet, um Docker-Compose zu erstellen.

docker-compose.yml


version: '3.4'
services:
  web:
    build:
      context: .
      target: python
    volumes:
      - .:/app
    environment:
      - FLASK_APP=index.py
    ports:
      - 127.0.0.1:5000:5000
    command: "poetry run flask run --host=0.0.0.0"
  note:
    build:
      context: .
      target: python
    volumes:
      - .:/app
    ports:
      - 127.0.0.1:8888:8888
    command: "poetry run jupyter notebook --no-browser --ip=0.0.0.0 --port=8888 --allow-root --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.disable_check_xsrf=True"
  code:
    build:
      context: .
      target: code-server
    ports:
      - 127.0.0.1:8080:8080
    volumes:
      - ./:/app
    entrypoint: "code-server --auth none --bind-addr=0.0.0.0:8080 /app"

Jetzt mache $ docker-compose build und du bist fertig. (Es wird einige Zeit in Anspruch nehmen) Sie können VS Code in Ihrem Browser verwenden, indem Sie http://127.0.0.1:8080 besuchen.

Um Jupyter mit dem Code-Server zu verwenden, verwenden Sie > Python: Geben Sie den lokalen oder Remote-Jupyter-Server für Verbindungen an an, um den Container anzugeben, in dem Jupyter ausgeführt wird, z. B.http: // note: 8888 /.

json:.vscode/settings.json


{
  "python.dataScience.jupyterServerURI": "http://note:8888/"
}

Verweise

Darüber hinaus befindet sich der vollständige Text des in diesem Artikel erstellten Codes im folgenden Repository.

https://github.com/s2terminal/python-dev

Recommended Posts

Erstellen Sie eine Entwicklungsumgebung mit Jupyter und Flask mit Python in Docker (unterstützt sowohl VS Code als auch Code-Server).
Konstruktionsvorlage für die lokale Python-Entwicklungsumgebung [Flask / Django / Jupyter mit Docker + VS-Code]
Erstellen Sie eine Python-Umgebung mit WSL + Pyenv + Jupyter + VSCode
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Erstellen Sie mit Docker kostengünstig eine Flask-Entwicklungsumgebung
UpNext2 Development Record # 1 Erstellen Sie eine Python CI-Umgebung in VS Code
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Erstellen und testen Sie mit Docker in wenigen Minuten eine OpenCV- und Python-Umgebung
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Erstellen Sie eine Python-Entwicklungsumgebung mit Visual Studio Code
Verwenden Sie Python in einer Anaconda-Umgebung mit VS-Code
Debuggen eines Python-Programms durch Remoteverbindung mit einem Docker-Container in einer WSL2-Umgebung mit VS-Code
Flutter in Docker - Erstellen und Verwenden einer Flutter-Entwicklungsumgebung in einem Docker-Container
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Versuch und Irrtum]
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Erstellen Sie eine lokale Entwicklungsumgebung mit WSL + Docker Desktop für Windows + Docker-Lambda + Python
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
Erstellen Sie mit Docker eine einfache Fast API-Entwicklungsumgebung
Ich habe versucht, eine Umgebung mit WSL + Ubuntu + VS-Code in einer Windows-Umgebung zu erstellen
[Django] Verwenden Sie VS Code + Remote-Container, um schnell eine Entwicklungsumgebung für Django-Container (Docker) zu erstellen.
Erstellen Sie mit Docker eine grundlegende Data Science-Umgebung (Jupyter, Python, R, Julia, Standardbibliothek).
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
Richten Sie eine Python-Entwicklungsumgebung mit Visual Studio Code ein
Erstellen einer Python-Umgebung auf einem Mac bis zur Verwendung von Jupyter Lab
Erstellen Sie eine Go-Entwicklungsumgebung mit den Remote-Containern von VS Code
Erstellen Sie eine VS Code + Docker-Entwicklungsumgebung mit Linux VM
Erstellen Sie eine Python-Entwicklungsumgebung mit Eclipse (fügen Sie einen HTML-Editor hinzu).
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
[Venv nicht erforderlich] Die stärkste Python-Entwicklungsumgebung, die mit Remote Containern erstellt wurde [VS Code / Docker]
Erstellen Sie mit Docker eine Go-Umgebung
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Anwendungsentwicklung mit Docker + Python + Flask
So erstellen Sie eine virtuelle Ausführungsumgebung für Python mit Visual Studio Code und pipenv auf einem Windows-Computer (auch Jupyter-Notebook)
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit dem Serverless Framework eine lokale Entwicklungsumgebung für Lambda + Python
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Erstellen Sie eine Python-Ausführungsumgebung mithilfe der GPU mit der GCP Compute Engine
Debug-Einstellungen in der virtuellen Umgebung bei Verwendung von Pipenv mit VSCode
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie mit Neovim eine moderne Python-Umgebung
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Bereiten Sie mit venv mit VS Code eine virtuelle Python-Umgebung für Ihr Projekt vor
Ich war süchtig danach, eine Python-Venv-Umgebung mit VS Code zu erstellen
Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.