Ceci est un mémo car vous pouvez créer un environnement Python dans un conteneur Docker avec une extension appelée Remote-Containers of VSCode.
Il y a deux objectifs.
Le premier est que l'environnement local est propre. Il y a des choses comme pyenv et anaconda qui changent d'environnement, mais à la fin cela devient localement dépendant. Même si je fais des exigences, quelle est la version Python? Je ne sais pas si c'est une commande, je ne peux pas y entrer pour une raison quelconque, je ne peux pas mélanger pip et conda, et parfois je ne sais pas ce que c'est, mais j'ai l'impression que je veux obtenir mon diplôme.
Le second est facile à déployer.
Ces jours-ci, je calcule et fournit parfois des services sur le cloud plutôt que sur le PC local, alors j'aimerais le faire avec quelques Dockerfile
.
C'est pourquoi vous ne les obtiendrez pas tout de suite, mais dans cet article, je vais enregistrer jusqu'à la configuration d'un Flask avec Remote-Container.
J'ai mis le fichier final sur github. yo16 / simple_flask
Structure finale du fichier.
/simple_flask
/.devcontainer
Dockerfile
devcontainer.json
/simple_app
/templates
default.html
app.py
requirements.txt
Cependant, dans cet article, je ne veux pas vous dire le résultat ou le contenu de la création, mais c'est une procédure dans VS Code, donc cela n'a pas vraiment d'importance. Si vous êtes fatigué de créer une source simple de Flask, veuillez la télécharger et l'utiliser.
Créez un dossier pour créer cet environnement. Cette fois "simple_flask".
Structure des fichiers jusqu'à ce point.
/simple_app
Tout va bien, je vais donc en faire un simple.
Structure des fichiers jusqu'à ce point.
/simple_flask
/simple_app
/templates
default.html
app.py
Je n'expliquerai pas le contenu de Flask, mais app.py a ʻapp.run () ou
@ app.route ('/') . Si vous faites cela
python app.py`, le site Flask sera lancé.
/ simple_flask
avec VS CodeCliquez sur la zone verte comme> <en bas à gauche de VS Code
Sélectionnez "Remote-Containers: Open Folder in Container ..." parmi ceux qui apparaissent à l'écran.
Sélectionnez le dossier "simple_flask" et ouvrez
Sélectionnez "Python 3" tel qu'il apparaîtra à nouveau ci-dessus
Il sortira à nouveau, alors sélectionnez la version Python appropriée
Il sortira à nouveau, donc c'est OK (c'est le dernier) À propos, si vous cochez ici et même si 0 est sélectionné, quelque chose sera installé, alors vérifiez-le dans la procédure ultérieure.
Si vous pouvez le faire jusqu'à présent, l'écran ci-dessous s'affiche. Le point est l'écran de type Linux dans le terminal inférieur droit. (Ça l'est vraiment) C'est déjà dans le conteneur Docker avec bash en cours d'exécution.
Donc quand j'essaye ls là, ça ressemble à ça, et "simple_app" est également fermement placé.
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 est également inclus.
root@c249cd5c6b06:/workspaces/simple_flask# python -V
Python 3.8.5
Étant donné que l'image Docker de python a été sélectionnée à l'étape 3-4, Python est inclus, mais bien sûr, il n'y a pas de Flask car il est dans son état d'origine. Alors je vais le mettre. Tout d'abord, mettez-le sur la console.
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)
C'est dans ... (suer Eh bien, je pense que je voudrais peut-être ajouter d'autres choses, alors dans ce cas, je vais procéder avec cette procédure, donc je vais continuer avec le tay qui n'était pas inclus.
Ensuite, créez requirements.txt afin que le module actuellement inclus soit installé automatiquement lors de la création du conteneur Docker.
root@c249cd5c6b06:/workspaces/simple_flask# pip freeze > requirements.txt
Si vous faites cela, vous pouvez bien sûr le faire dans le conteneur Docker, mais vous pouvez également le faire sur VSCode. Vous pouvez l'ouvrir normalement avec VS Code pour le vérifier et le modifier.
Utilisez ceci dans l'étape suivante.
Celui qui fonctionne lors de la création d'un conteneur est . / Dockercontainer / Dockerfile
.
Si vous ouvrez ce fichier avec VS Code, vous pouvez voir diverses choses qui fonctionnent lorsque vous ouvrez le conteneur Docker. (J'utilise l'image de Microsoft.)
Ici, comme expliqué à l'étape 2-6, «Node.js» doit être installé indépendamment du fait qu'il soit installé ou non, alors commentez cette zone et utilisez nodejs. J'essaierai de ne pas le faire. Vous n'avez pas besoin du simple Flask dans cet article, mais si vous en avez besoin, utilisez-le.
Au contraire, le fichier requirements.txt créé à l'étape 4 n'est pas utilisé, donc décommentez-le. Copiez-le dans / tmp / pip-tmp /, pip install
, et supprimez-le lorsque vous avez terminé.
Le Dockerfile modifié est ci-dessous.
# 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
Recréez à nouveau le conteneur à l'aide du Dockerfile modifié.
Cliquez sur la zone verte en bas à gauche
Sélectionnez "Remote-Containers: Rebuild Container" dans le menu déroulant ci-dessus
C'est tout! Je vous remercie pour votre travail acharné.
Si vous démarrez app.py avec python depuis le terminal en bas à droite, le serveur Flask habituel démarrera.
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)
C'est tout!
Recommended Posts