Créer un environnement de développement à l'aide de Jupyter et Flask avec Python dans Docker (prend en charge à la fois VS Code / code-server)

Je pensais utiliser un peu Python, mais je ne voulais pas installer diverses choses pour construire l'environnement. J'ai donc essayé de créer un environnement à l'aide de Docker.

Nous visons à créer un environnement dans lequel vous pouvez développer avec VS Code (ou serveur de code), en utilisant à la fois un environnement interactif et le Web. En particulier, j'étais accro à la connexion de l'extension Python de VS Code à Jupyter qui s'exécute sur Python dans Docker, je vais donc laisser une note de la procédure de construction de l'environnement dans cet article.

Exigences

Créez un environnement de développement capable de faire tout ce qui précède.

environnement

Fonctionnement confirmé dans l'environnement suivant

Procédure de construction de l'environnement

Commencez par découper un répertoire de travail approprié.

$ mkdir python-dev && cd $_

Initialisez Git comme vous le souhaitez.

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

Utilisez Poetry pour la gestion des packages. Décrivez le Dockerfile et le docker-compose.yml pour créer l'environnement avec Poetry.

Dockerfile


FROM python:3.8.3-slim
WORKDIR /app

RUN pip install poetry

Spécifiez l'image de conteneur contenant la version de Python que vous souhaitez utiliser. À l'avenir, j'utiliserai l'image mince car je souhaite d'abord réduire la taille de l'image, tout en gardant à l'esprit que je souhaiterai installer divers packages dépendants dans l'image.

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"

Cette fois, pour faciliter l'accès à Jupyter dans le conteneur à partir de l'hôte, certains paramètres sont inclus pour désactiver la fonction de sécurité de Jupyter.

Si vous exécutez sur un serveur public plutôt que sur l'environnement local de votre ordinateur, vous devez éviter ce paramètre.

Une fois que le docker est prêt, configurez Poetry.

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

Ajoutez une commande à $ poetry install lors de la construction de Docker.

Dockerfile


FROM python:3.8.3-slim
WORKDIR /app

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

Placez index.py pour lancer avec Flask.

index.py


from flask import Flask

app = Flask(__name__)

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

Construisez et vous avez terminé.

$ docker-compose build

Comment utiliser

Après $ docker-compose up

--Utiliser avec CLI - $ docker-compose run --rm web python --version --Utiliser sur le Web

Utiliser Python dans Docker avec VS Code

Tout d'abord, installez ce qui suit dans VS Code.

Sélectionnez le conteneur cible avec l'extension Docker sur VS Code et cliquez sur «Joindre Visual Studio Code». image.png

Ouvrez la fenêtre VS Code pour accéder à distance au conteneur et installez Extension Python (ms-python.python) «Installer sur le conteneur» Cliquez sur le bouton pour installer et recharger le VS Code.

Succès si le Python affiché par > Python: Select Interpreter etc. de VSCode est celui de Docker (dans cet exemple, Python 3.8.3 dans / usr / local / bin / python) est.

image.png

Utiliser Jupyter sur VS Code

Dans le VS Code attaché au conteneur comme ci-dessus, sélectionnez ʻExisting in> Python: Spécifiez le serveur Jupyter local ou distant pour les connexionset entrezhttp: // localhost: 8888 /. Vous pouvez également créer un fichier appelé .vscode / settings.json`.

json:.vscode/settings.json


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

Vous pouvez utiliser Jupyter sur VSCode en rechargeant VSCode et en faisant > Python: Create New Blank Jupyter Notebook.

image.png

Si un mot de passe vous est demandé, tapez simplement Entrée avec des caractères vides.

image.png

Utiliser Python dans Docker avec un serveur de code

Si vous utilisez code \ -server au lieu de VSCode, cela fonctionnera sur le navigateur, donc en particulier pour Chromebook, cela fonctionnera légèrement sur Chrome au lieu de l'environnement GUI Linux. Je vais. Étant donné que des fonctions étendues telles que Python peuvent être incluses dans le conteneur, il y a également l'avantage de pouvoir être codées pour chaque environnement de développement.

L'inconvénient est que la capacité d'image augmente. (Nécessite 1 Go supplémentaire)

Pour utiliser le serveur de code, créez le conteneur avec le serveur de code et les extensions.

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

Ajoutez également un service qui démarre le serveur de code à docker-compose.

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"

Maintenant, faites $ docker-compose build et vous avez terminé. (Cela prendra du temps) Vous pouvez utiliser VS Code sur votre navigateur en visitant http://127.0.0.1:8080.

Pour utiliser Jupyter avec un serveur de code, utilisez > Python: Spécifiez le serveur Jupyter local ou distant pour les connexions pour spécifier le conteneur dans lequel jupyter est exécuté, tel que http: // note: 8888 /.

json:.vscode/settings.json


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

Les références

En outre, le texte intégral du code créé dans cet article se trouve dans le référentiel suivant.

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

Recommended Posts

Créer un environnement de développement à l'aide de Jupyter et Flask avec Python dans Docker (prend en charge à la fois VS Code / code-server)
Modèle de construction d'environnement de développement local Python [Flask / Django / Jupyter avec Docker + VS Code]
Créer un environnement Python avec WSL + Pyenv + Jupyter + VSCode
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
[Python] Créer un environnement de développement Django avec Docker
Créer un environnement d'exécution python avec VS Code
Créez un environnement de développement Flask à faible coût avec Docker
UpNext2 Development Record # 1 Construire un environnement Python CI dans VS Code
Créer un environnement Jupyter Lab (Python) avec Docker
Créez et essayez un environnement OpenCV et Python en quelques minutes à l'aide de Docker
[DynamoDB] [Docker] Créer un environnement de développement pour DynamoDB et Django avec docker-compose
Créer un environnement de développement Python avec Visual Studio Code
Utiliser Python dans un environnement Anaconda avec VS Code
Comment déboguer un programme Python en se connectant à distance à un conteneur Docker dans un environnement WSL2 avec VS Code
Flutter dans Docker - Comment créer et utiliser un environnement de développement Flutter dans un conteneur Docker
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Essai et erreur]
Compilation croisée de Raspberry Pi et création d'un environnement de développement de débogage à distance avec VS Code
Créez un environnement de développement local avec WSL + Docker Desktop pour Windows + docker-lambda + Python
Construction d'environnement virtuel avec Docker + Flask (Python) + notebook Jupyter
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Créez un environnement de développement avec Poetry Django Docker Pycharm
Créer un environnement de développement d'API rapide léger à l'aide de Docker
J'ai essayé de créer un environnement avec WSL + Ubuntu + VS Code dans un environnement Windows
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) à l'aide de VS Code + Remote Containers
Créez un environnement de science des données de base (Jupyter, Python, R, Julia, bibliothèque standard) avec Docker.
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
Configurer un environnement de développement Python avec Visual Studio Code
Construire un environnement Python sur un Mac, jusqu'au point d'utiliser Jupyter Lab
Créez un environnement de développement Go avec les conteneurs distants de VS Code
Créer un environnement de développement VS Code + Docker avec une machine virtuelle Linux
Créer un environnement de développement Python avec Eclipse (ajouter un éditeur HTML)
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) avec PyCharm
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Créez un environnement de développement Python simple avec VSCode et Docker Desktop
[Venv non requis] L'environnement de développement Python le plus puissant créé avec des conteneurs distants [VS Code / Docker]
Créer un environnement go à l'aide de Docker
Construire un environnement Mysql + Python avec docker
Développement d'applications avec Docker + Python + Flask
Comment créer un environnement d'exécution virtuelle pour Python à l'aide de Visual Studio Code et de pipenv sur une machine Windows (également le notebook Jupyter)
Concurrence avec VS Code Créez un environnement Python pour les professionnels sous Windows
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créer un environnement de développement local pour Lambda + Python à l'aide de Serverless Framework
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Créez un environnement d'exécution Python à l'aide de GPU avec GCP Compute Engine
Paramètres de débogage dans un environnement virtuel lors de l'utilisation de Pipenv avec VSCode
[Linux] Créer un environnement Jenkins avec Docker
Créez un environnement virtuel pour python avec pyenv
Créez un environnement Python moderne avec Neovim
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
Préparez un environnement virtuel Python pour votre projet avec venv avec VS Code
J'étais accro à la création d'un environnement Python venv avec VS Code
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.