[DOCKER] Écrire sur la création d'un environnement Python pour l'écriture de Qiita Qiita

Écrivons un article Qiita dans le système d'apprentissage automatique pour la première fois depuis longtemps! !! !! J'ai pensé, mais à chaque fois que c'était difficile de créer l'environnement, c'était un problème, donc c'était un méta-comme que j'ai essayé de créer un environnement pour cela? J'aimerais écrire un article.

Aperçu

Dans cet article, j'aimerais écrire sur la façon de configurer facilement un environnement python indépendant et de me connecter à partir d'un navigateur à l'aide de Docker-compose. Nous allons également écrire sur la façon d'exécuter du code de manière interactive à partir de VSCode ainsi que sur l'accès depuis un navigateur! Même si ce ne sont pas pour écrire Qiita, je pense qu'ils peuvent répondre à des requêtes telles que "Je veux l'exécuter dans un environnement d'exécution propre"!

supposition

Cet article ne couvre pas l'introduction de Docker, Docker-compose et VS Code. Si vous le recherchez, il sortira facilement (bien que Docker sur Windows semble être difficile). De plus, comme je suis spécialisé dans la science des données, le langage de programmation est Python3. Je n'écrirai pas en détail, mais R est également partiellement pris en charge. Puisque je suis un partisan d'Apple, j'utilise Mac comme système d'exploitation, mais je pense que cela fonctionnera probablement dans n'importe quel environnement tant que je peux utiliser Docker.

procédure

Dans cet article, nous allons suivre les étapes suivantes:

  1. Téléchargez Dockerfile
  2. Créez docker-compose.yml
  3. Lancez le conteneur à partir de docker-compose et accédez à partir du navigateur
  4. (Bonus) Codage confortable à l'aide du bureau à distance de VSCode et de l'extension jupyter

1. Téléchargez Dockerfile

Le github officiel de jupyter référentiel docker-stacs dispose de nombreux outils pour créer un environnement python à l'aide de Jupyter. Par exemple, si vous voulez faire du Deep Learning avec tensorflow, allez dans tensorflow-notebook et cela ressemblera à ci-dessous. Vous pouvez voir qu'il y a un Dockerfile dans. image.png

Dans ce Dockerfile

ARG BASE_CONTAINER=jupyter/scipy-notebook

Il y a une partie appelée, mais on dit que c'est une opération supplémentaire basée sur scipy-notebook Ca a du sens. Et si vous regardez scipy-notebook, le même

ARG BASE_CONTAINER=jupyter/minimal-notebook

Il est écrit cela. En effet, l'environnement de tensorflow est l'environnement de Scipy (pour la science des données par python de base) et tensorflow est ajouté, et l'environnement de Scipy est l'environnement dans lequel scikit-learn et pandas sont ajoutés à l'environnement minimal. Cela signifie qu'il y en a. Je n'entrerai pas dans les détails, mais il existe d'autres environnements Spark et R, et si vous utilisez le Dockerfile au besoin, l'environnement sera lancé d'un seul coup! De plus, comme il s'agit d'un Docker, si vous avez une bibliothèque que vous souhaitez ajouter personnellement, il vous suffit d'en ajouter un peu, ce qui est très pratique!

Alors, ouvrez d'abord le répertoire que vous souhaitez exécuter à partir du terminal et clonez ce référentiel.

$ git clone https://github.com/jupyter/docker-stacks.git

Et, par exemple, lorsque vous souhaitez utiliser base-notebook

$ cp -R ./docker-stacks/base-notebook ./

Si vous copiez l'outil, le téléchargement est terminé.

2. Créez docker-compose.yml

Il est difficile de démarrer jupyter à chaque fois ou d'écrire une commande qui spécifie le port, donc je vais le démarrer facilement en utilisant docker-compose.

docker-compose.yml


version: '3'
services:
  #Nom du service jupyterlab(Nom du conteneur)Mis à
  jupyterlab:
    #Construire à partir de Dockerfile(Pour pouvoir écrire des paramètres supplémentaires)
    build:
      context: .
      dockerfile: Dockerfile

    #l'hôte./travail du conteneur/home/Monter sur jovyan
    # Jovian means "related to Jupiter"
    volumes:
       - "./work:/home/jovyan"
      
    #Définir l'utilisateur
    user: root
    environment:
      B_UID: 1000
      NB_GID: 100
      GRANT_SUDO: "yes"

    #Autoriser l'accès à l'appareil
    privileged: true

    #Mapper l'hôte 8888 au conteneur 8888
    ports:
      - "8888:8888"

    #Redémarrer sauf arrêt
    restart: unless-stopped

    #Démarrez jupyterlab après avoir démarré le conteneur
    command: start.sh jupyter lab --NotebookApp.token=''

C'est OK si vous créez le fichier ci-dessus dans la même couche que le Dockerfile (je suis directement sous le répertoire base-notebook). Cependant, si le port 8888 est utilisé par l'hôte, il est judicieux de définir XXXX: 8888 sur un numéro différent.

3. Lancez le conteneur à partir de docker-compose et accédez à partir du navigateur

Après avoir fait ce qui précède, accédez au terminal et accédez au même niveau que docker-compose.yml.

$ docker-compose up -d

Frappez. Ensuite, au démarrage, tapez localhost: 8888 dans le navigateur![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265221/f45f76e0-4847 -8d03-4309-ddb2a79e5cd6.png) Le laboratoire Jupyter est ouvert comme ça. C'est vraiment simple. Puisque le volume est réglé sur ./work / home / jovyan, si vous créez un fichier à partir de l'accueil de jupyterlab, il sera reflété dans ./work du côté hôte. Ceci termine la construction de l'environnement python. Tout ce que vous avez à faire est d'installer les packages requis en fonction de l'article que vous souhaitez écrire, et de partager le Dockerfile pour la reproductibilité!

4. (Bonus) Codage confortable à l'aide du bureau à distance de VSCode et de l'extension jupyter

Cela suffit, mais cette fois, nous allons mettre au défi de créer un environnement d'exécution interactif avec VS Code. L'avantage de faire cela est que vous pouvez toujours exécuter partiellement le fichier py. Je pense qu'il est très pratique de pouvoir facilement déboguer et écrire des processus difficiles tels que le refactoring uniquement pour les fichiers ipynb.

Ensuite, je vais commencer à travailler immédiatement. Si VS Code avec Docker et Remote Desktop Extension sont installés, appuyez sur Commande + Maj + P pour ouvrir l'onglet de commande comme indiqué ci-dessous. image.png Utilisez Ouvrir le dossier dans le conteneur pour ouvrir l'outil que vous venez de définir. (Dans mon cas, ouvrez le cahier de base) image.png

Maintenant, lorsqu'on vous demande Config, sélectionnez From docker-compose. Alors attendez un peu, image.png Si un tel écran est ouvert, l'accès au conteneur est réussi pour le moment.

En parlant de jupyter, tapez jupyter à partir de la recherche d'extension et installez-la affichée en haut. image.png

Lorsque l'installation est terminée, le bouton "Recharger requis" apparaîtra comme indiqué ci-dessous, alors appuyez dessus pour recharger. image.png

Après le rechargement, créons un fichier python en choisissant de manière appropriée jupyter_test.py dans ./work. Puis tapez "# %%" comme indiqué ci-dessous et vous verrez des commandes comme "Exécuter la cellule" au-dessus! image.png Lorsque vous appuyez sur cette Run Cell, le code écrit dans le bloc jusqu'au prochain "# %%" sera exécuté de manière interactive. Si vous pouvez le confirmer, vous avez réussi!

Résumé

Cette fois, avec la motivation d'écrire un article sur Qiita, j'ai présenté comment configurer facilement un environnement d'exécution python propre et reproductible, et j'ai même présenté comment l'exécuter de manière interactive avec VS Code. Même si vous n'écrivez pas de blog, il est pratique de pouvoir préparer plusieurs environnements python indépendants avec une seule commande. Après tout, j'ai réalisé à nouveau que Docker est incroyable (vocabulaire). À l'avenir, j'aimerais écrire quelques articles qui sont précieux en termes de science des données en utilisant cet environnement. Merci d'avoir regardé jusqu'au bout! !!

Recommended Posts

Écrire sur la création d'un environnement Python pour l'écriture de Qiita Qiita
[Mac] Création d'un environnement virtuel pour Python
Créer un environnement de développement Python pour le développement de l'IA
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Pensez à créer un environnement Python 3 dans un environnement Mac
Construire un environnement virtuel Python
Construire un environnement virtuel Python
Construire un environnement Python avec pyenv, pyenv-virtualenv, Anaconda (Miniconda)
Création d'un environnement de travail Docker R et Python
Procédure de création d'un environnement CDK sous Windows (Python)
Construction d'environnement Python pour les débutants en programmation (Mac OS)
Mémo de construction d'environnement d'apprentissage automatique par Python
Construire un environnement Python sur Mac
Construire un environnement Python sur Ubuntu
Créer un environnement virtuel avec Python 3
Construire un environnement python pour l'intelligence artificielle (Chainer / TensorFlow / CSLAIER)
Création d'un environnement de développement pour les applications Android - Création d'applications Android avec Python
Construire un environnement Hy pour Lisper qui n'a pas touché Python
[Python] Création d'un environnement Python virtuel pour le didacticiel sur la pyramide (résumé)
[Pyenv] Construire un environnement python avec ubuntu 16.04
Création de l'environnement de travail Docker R et Python 2: prise en charge du japonais
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
Créons un environnement virtuel pour Python
De la création d'un environnement Python pour les personnes inexpérimentées à Hello world
Création d'un environnement Python 3.6 avec Windows + PowerShell
Construire un environnement conda pour les utilisateurs de ROS
Création d'un environnement virtuel pour Mayavi dédié aux utilisateurs de Python 3.6, Anaconda et Spyder
Selenium + WebDriver (Chrome) + Python | Création d'un environnement pour le scraping
Création d'un wrapper Python pour l'API Qiita
Construire un environnement python avec virtualenv et direnv
Créer un environnement pour exécuter des scripts Python (pour Mac)
Construire un environnement Anaconda pour Python avec pyenv
Un mémo que j'ai écrit un tri de fusion en Python
[Python] Préparation au développement Web (création d'un environnement virtuel)
Commandes pour créer un environnement python3 avec virtualenv
Procédure de création d'un environnement d'isolation Python (environnement venv)
Notes sur la création d'un environnement python par les débutants
Construire un environnement Python sur le serveur Sakura VPS
À propos de Python for loop
À propos de Python, pour ~ (plage)
À propos de l'environnement de développement Python
Créer un environnement Python
Maintenance de l'environnement Python pour les projets
Recommandation de construction d'un environnement Python portable avec conda
Création d'un environnement de formation pour les tests de pénétration à l'aide de Naumachia
Créez un environnement python pour chaque répertoire avec pyenv-virtualenv
Créer un environnement pour le traitement du langage naturel avec Python
Un mémo sur la création d'une application Django (Python) avec Docker
Remarque conda: Création d'un environnement Python avec Spacon ITO
mémo python (pour moi-même): À propos de l'environnement de développement virtualenv
Prise en charge de Fabric pour Python 3
Construction de l'environnement Python pour Mac
Construction de l'environnement Python3 (pour les débutants)
Mémorandum sur la corrélation [Python]
Un mémorandum sur le simulacre de Python
[Pour organiser] Environnement de développement Python
Créer un environnement Python hors ligne
À propos de "for _ in range ():" de python