Utilisez-vous toujours anyenv? Allons-y plus facilement avec Docker?

Inconvénients qui se produisent lors de l'installation de l'environnement sur un hôte tel que Windows

Les différences de version sont courantes.

Et surtout, l'installation est gênante. Et node et maven écrasent régulièrement l'environnement local.

Et le problème de la différence environnementale entre Mac et Windows qui se produit.

En fin de compte, une version différente sera utilisée en raison d'une erreur de réglage d'environnement.

Recommandation de devcontainer

devcontainer est une technologie permettant de créer un environnement de développement sur Docker et d'y effectuer tous les développements.

C'est également la technologie de base lors de l'utilisation des espaces de codes GitHub (espaces de codes Visual Studio).

Pour faire simple, nous allons créer une machine virtuelle pour le développement à l'intérieur, donc

Il est un peu inapproprié pour développer des applications GUI telles que Window App et mobile, C'est fondamentalement suffisant pour le système Web.

Par conséquent, si vous souhaitez exécuter quelque chose comme node, Ruby ou Python avec VS Code, vous pouvez le faire avec devcontainer.

Les choses nécessaires

Essayez le conteneur de développement

Cette fois, nous supposerons que vous utilisez nodejs + Express + mongodb comme exemple. Cependant, mongo ne fera que se lever et n'y accédera pas réellement.

paramètres de devcontainer

Créez un répertoire appelé .devcontainer et stockez-y des informations sur devcontainer.json et les conteneurs docker.

 Root Directory
  ├ .devcontainer 
  │   ├ devcontainer.json
  │   ├ docker-compose.yml
  │   └ Dockerfile
└ Chaque source

Créer un conteneur de développement

Contient des informations sur le conteneur et le code VS qui y s'exécute.

json:.devcontainer/devcontainer.json


{
    //Nom du conteneur
    "name": "Express Sample",

    // docker-composer le nom du fichier
    "dockerComposeFile": "docker-compose.yml",

    //Le répertoire racine du projet attaché au conteneur
    "workspaceFolder": "/work",

    // docker-Si composer est plusieurs conteneurs
    //Spécifiez dans quel conteneur entrer
    "service": "app",
    //Port pour se connecter de l'extérieur(Port ouvert)Spécifier
    "appPort": 3000,

    //Définissez l'extension à installer
    "extensions": [
        "VisualStudioExptTeam.vscodeintellicode",
        "dbaeumer.vscode-eslint",
        "stevencl.addDocComments",
        "eg2.tslint"
    ]
}

Les extensions répertoriées ici seront installées dans une zone différente de celle du VSCode hôte.

Par conséquent, même si vous passez à une langue / plate-forme différente, vous pouvez éviter que le code VS ne devienne ridiculement lourd.

Créer un fichier de configuration Docker

Créez un Dockerfile et un docker-compose.yml. Quel que soit le conteneur de développement, il est possible d'utiliser celui utilisé pour le développement tel quel.

.devcontainer/Dockerfile


FROM node:15.2.0-alpine3.10

EXPOSE 3000

:.devcontainer/docker-compose.yml


version: '3'

services:
  app:
    build: .
    ports:
      - 3000:3000
    volumes:
      - ../:/work
    tty: true

  db:
    image: mongo:3.6.20-xenial
    #Normalement, une connexion de port et de volume est requise.

Rouvrir

Se rouvre-t-il lorsque l'écran est rechargé? Est demandé, alors sélectionnez "Rouvrir dans le conteneur"

image.png

Après cela, l'écran sera rechargé et vous pourrez développer l'image et générer le conteneur. Les installations liées à VSCode seront également exécutées, alors soyez patient.

image.png

Une fois le démarrage réussi, vérifiez que le nœud est en cours d'exécution.

image.png

À ce stade, le terminal VS Code pointe vers le terminal de conteneur docker, donc En gros, veuillez utiliser ce terminal dans VS Code.

Développement d'applications

npm init et créez package.json.

# npm init -y
# nom install -S express

Ensuite, écrivez le code suivant.

index.js


'use strict'

const express = require('express');
const app = express();

const port = process.env.PORT || 3000;

app.get('/', (req, resp) => {
    resp.send('Hello, JS WORLD!');
})


app.listen(port, () =>{ 
    console.log(`Example app listening on Port ${port}`);
});

Je vais essayer.

# node index.js
node index.js
Example app listening on Port 3000

Connectons-nous depuis l'hôte dans cet état.

S'il est bien affiché, il est complet.

image.png

Après cela, vous pouvez procéder au développement de la même manière que le code VS normal.

Déploiement vers d'autres développeurs

Même si vous souhaitez le déployer sur d'autres développeurs, vous pouvez facilement le créer tant que vous créez un conteneur de développement.

Tout ce dont vous avez besoin est VS Code et des extensions pour le développement à distance.

Paramètres autres que Node.js

Cette fois, je l'ai fait avec node.js, mais l'utilisation de base est la même pour Python, Ruby et Java.

En gros, si vous ne faites attention qu'aux deux points suivants, vous ne serez pas en difficulté.

enfin

Étant donné que l'environnement et la version peuvent être séparés pour chaque conteneur, Il est plus sûr de résoudre les problèmes de version que d'utiliser xEnv.

De plus, si vous utilisez Docker comme environnement de développement, il vous suffit d'écrire un simple json.

Si vous utilisez VS Code, pourquoi ne pas utiliser devcontainer pour simplifier la construction de votre environnement?

Recommended Posts

Utilisez-vous toujours anyenv? Allons-y plus facilement avec Docker?
[Bonne nouvelle] Vous pouvez toujours utiliser Java 8 !!
Vous devez utiliser winpty avec docker exec [Windows]
Utilisation de PlantUml avec Honkit [Docker]
La version d'Elasticsearch que vous utilisez est-elle compatible avec Java 11?
Transformez facilement les applications Java en Docker avec Jib
Utilisation de cuda11.0 avec pytorch en utilisant Docker