[DOCKER] Meilleures pratiques personnelles pour l'environnement de développement Python basé sur VS Code

Aperçu

Dans l'apprentissage automatique et l'analyse de données, il est rare que le travail d'analyse / développement soit effectué uniquement avec la machine à portée de main. Je pense qu'il est développé en utilisant Docker etc. sur un serveur distant avec GPU Morimori.

À partir de VSCode, j'ai fait un essai et une erreur sur le développement Python dans un environnement distant, il s'agit donc d'un résumé.

L'auteur est un débutant qui vient de commencer à utiliser VS Code, j'apprécierais donc tout conseil.

environnement

C'est un environnement de travail. Je ne pense pas que cela soit lié à cet environnement.

--Machine locale: Macbook Pro - VSCode: v1.48.2

Ce que vous voulez réaliser

Puisqu'il s'agit d'un environnement de développement intégré, je voudrais lancer VSCode sur une machine locale et terminer le travail avec uniquement le VSCode local.

procédure

Connexion SSH au serveur distant

Développement à distance Utilisez l'extension. Cette extension semble être une collection d'extensions de développement à distance pour SSH, Container et WSL (elles se ressemblent même si elles sont installées).

Référence: https://code.visualstudio.com/docs/remote/ssh#_getting-started

Introduction de l'extension

Remote Development:https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

Ajouter un serveur distant

Ouvrez la palette de commandes et sélectionnez Remote-SSH: Connect to Host pour afficher une liste de sélection de connexions.

スクリーンショット 2020-09-02 16.25.54.png

Si vous sélectionnez ʻAjouter un nouvel hôte SSH` à partir d'ici, vous serez invité à entrer la commande shsh, alors entrez la même commande que pour la connexion ssh depuis le terminal. Lors de la première connexion, je me souviens qu'il n'y avait qu'un élément «Ajouter un nouvel hôte SSH».

スクリーンショット 2020-09-02 16.26.12.png

Pour l'authentification par clé, spécifiez la clé avec l'option -i lors de la saisie de la commande ssh.

Ces paramètres sont écrits dans ~ / .ssh / config par défaut. Vous pouvez également écrire directement les paramètres de transfert de port, les paramètres de fichiers clés, etc. (Peut-être ajouter un hôte)

Lien

Sélectionnez le serveur distant depuis Remote-SSH: Connect to Host sur la palette de commandes, comme vous l'avez fait lorsque vous avez ajouté l'hôte. Vous pouvez également y accéder en sélectionnant l'hôte dans "Remote Explorer" dans le menu contextuel sur le côté gauche de VS Code.

Faire fonctionner le conteneur Docker sur le serveur distant

Une fois connecté au serveur distant, l'étape suivante consiste à se connecter au conteneur Docker.

J'ai fait référence à l'article suivant (je viens de le tracer tel quel à titre de référence, veuillez donc vérifier la source de référence). Faites fonctionner le conteneur Docker sur le serveur avec SSH à partir de VS Code: https://qiita.com/_kani/items/1ce36e36b0bcda403be2

Lancement du conteneur

Lancez le terminal VSCode et lancez le conteneur avec la commande docker. L'extension RemoteDevelopment a également une fonction qui prend en charge du lancement du conteneur docker à la connexion, mais cela semble être une opération docker sur la machine locale. Ainsi, lors de la configuration d'un conteneur sur un serveur distant, utilisez la commande docker normale (je ne pouvais tout simplement pas le faire?).

Préparation de la connexion

Paramètres du port

Définissez la redirection de port. (Je ne comprends pas vraiment comment cela fonctionne ...)

Ouvrez le fichier de configuration ssh. Si vous ouvrez la palette de commandes et entrez ssh config etc., des éléments apparaîtront, alors sélectionnez-le.

スクリーンショット 2020-09-02 16.57.32.png

Ajoutez le paramètre LocalForward aux paramètres d'hôte distant appropriés.

Host 192.168.*******
  HostName 192.168.*******
  IdentityFile ~/.ssh/id_rsa
  User *****
  LocalForward 23750 /var/run/docker.sock

Paramétrage de l'extension de docker sur l'hôte distant

Connectez-vous à l'hôte distant à partir de VS Code. Il est également nécessaire d'installer l'extension de développement à distance sur l'hôte distant.

Dans Préférence, définissez les paramètres comme suit. Sélectionnez Remote sur l'onglet et recherchez Docker.host et il apparaîtra.

tcp://localhost:23750

スクリーンショット 2020-09-02 17.03.22.png

Vous êtes maintenant prêt.

L'écran de réglage apparaît lorsque vous entrez dans les préférences Ouvrir les paramètres utilisateur, etc. à partir de la palette de commandes.

Lien

Utilisez l'explorateur distant dans la barre latérale. Lorsque vous sélectionnez Conteneurs dans le menu déroulant en haut, une liste de conteneurs apparaîtra, alors sélectionnez le conteneur auquel vous souhaitez vous connecter. Connectez-vous au conteneur avec "Attach to Container" (une nouvelle fenêtre sera lancée).

スクリーンショット 2020-09-02 17.14.00.png

Utilisation du débogueur

Puisque VSCod est un environnement de développement intégré, vous pouvez définir de manière interactive des points d'arrêt et déboguer. Cependant, dans un environnement spécifique, il a été confirmé que les points d'arrêt ne peuvent pas être définis et les étapes ne peuvent pas être exécutées, et le programme s'exécute jusqu'à la fin.

Référence: Problème qui ne s'arrête pas à un point d'arrêt lors du débogage d'un environnement virtuel Python avec VSCode)

C'est un problème, mais il semble que la fonction de débogage soit activée en définissant des paramètres dans le fichier de configuration du débogueur «launch.json».

Ajouter des paramètres

'launch.json' s'affiche sur l'écran de l'éditeur en ouvrant le débogueur à partir du menu latéral VS Code et en appuyant sur la marque d'engrenage en haut. Ajoutez des paramètres à ce fichier json.

"stopOnEntry":true

スクリーンショット 2020-09-02 17.26.26.png

Mise en garde

Vous devez faire attention à l'ordre dans lequel vous mettez stopOnEntry. Quand je l'ai mis avant «args», je suis resté bloqué pendant un certain temps lorsque j'ai rencontré le phénomène selon lequel le paramètre «args» n'était pas appliqué et que l'argument n'était pas passé au débogueur.

Résumé

Après quelques essais et erreurs, je me suis maintenant installé sur la procédure ci-dessus. Si vous connaissez un meilleur moyen, faites-le moi savoir.

Je suis particulièrement inquiet de ne pas vraiment comprendre comment faire fonctionner le conteneur Docker.

Recommended Posts

Meilleures pratiques personnelles pour l'environnement de développement Python basé sur VS Code
Bonnes pratiques personnelles pour placer un projet Python de lancement en ligne de commande dans un conteneur Docker
[Pour organiser] Environnement de développement Python
Notes personnelles pour le traitement d'images python
Options d'environnement de développement Python pour mai 2020
Paramètres Emacs pour l'environnement de développement Python
Développement AWS Lambda Mes meilleures pratiques
Environnement de développement Python pour macOS utilisant venv 2016
Meilleures pratiques pour les paramètres de développement à distance Raspeye
6 bibliothèques Python pour un développement et un débogage plus rapides
Meilleures pratiques de gestion des packages dépendant des applications Python
Meilleures pratiques personnelles lors de la mise au point avec Chainer
Créer un environnement de développement Python pour le développement de l'IA
Bonnes pratiques pour Django views.py et urls.py (?)
Meilleures pratiques pour manipuler les données avec les pandas
Wagtail est le meilleur CMS pour Python! (Peut-être)
[Version 2020] Procédure de développement du robot personnel et ses précautions
Configurer l'environnement de développement TinyGo pour VS Code
Comprendre le développement de Python pour Pepper. -Introduction à Python Box-