Verwenden Sie noch anyenv? Lassen Sie uns mit Docker einfacher gehen?

Nachteile, die auftreten, wenn die Umgebung auf einem Host wie Windows installiert wird

Versionsunterschiede sind häufig.

Und vor allem ist die Installation mühsam. Und Knoten und Maven drücken die lokale Umgebung ständig zusammen.

Und das Problem der Umweltunterschiede zwischen Mac und Windows, das auftritt.

Letztendlich wird aufgrund eines Umgebungseinstellungsfehlers eine andere Version verwendet.

Empfehlung von devcontainer

devcontainer ist eine Technologie zum Erstellen einer Entwicklungsumgebung auf Docker und zum Ausführen der gesamten Entwicklung dort.

Es ist auch die Kerntechnologie bei der Verwendung von GitHub-Codespaces (Visual Studio-Codespaces).

Um es einfach auszudrücken: Wir werden eine virtuelle Maschine für die Entwicklung im Inneren erstellen

Es ist ein wenig ungeeignet für die Entwicklung von GUI-Apps wie Windows App und Mobile, Dies ist im Grunde genug für das Web-System.

Wenn Sie also etwas wie Node, Ruby oder Python mit VS Code ausführen möchten, können Sie dies mit devcontainer tun.

Dinge notwendig

Probieren Sie den Entwicklungscontainer aus

Dieses Mal wird angenommen, dass als Beispiel nodejs + Express + mongodb verwendet wird. Mongo wird jedoch nur aufstehen und nicht wirklich darauf zugreifen.

Devcontainer-Einstellungen

Erstellen Sie ein Verzeichnis mit dem Namen .devcontainer und speichern Sie darin Informationen zu devcontainer.json und Docker-Containern.

 Root Directory
  ├ .devcontainer 
  │   ├ devcontainer.json
  │   ├ docker-compose.yml
  │   └ Dockerfile
└ Jede Quelle

Erstelle einen Entwicklungscontainer

Enthält Informationen zum Container und zum VS-Code, der dort ausgeführt wird.

json:.devcontainer/devcontainer.json


{
    //Containername
    "name": "Express Sample",

    // docker-Dateinamen verfassen
    "dockerComposeFile": "docker-compose.yml",

    //Das Stammverzeichnis des Projekts, das an den Container angehängt ist
    "workspaceFolder": "/work",

    // docker-Wenn compose mehrere Container enthält
    //Geben Sie an, welcher Container eingegeben werden soll
    "service": "app",
    //Anschluss von außen(Port öffnen)Angeben
    "appPort": 3000,

    //Stellen Sie die zu installierende Erweiterung ein
    "extensions": [
        "VisualStudioExptTeam.vscodeintellicode",
        "dbaeumer.vscode-eslint",
        "stevencl.addDocComments",
        "eg2.tslint"
    ]
}

Die hier aufgeführten Erweiterungen werden in einem anderen Bereich als der Host-VSCode installiert.

Selbst wenn Sie zu einer anderen Sprache / Plattform wechseln, können Sie daher vermeiden, dass der VS-Code lächerlich schwer wird.

Erstellen Sie eine Docker-Konfigurationsdatei

Erstellen Sie eine Docker-Datei und docker-compose.yml. Unabhängig vom Entwicklungscontainer ist es möglich, den für die Entwicklung verwendeten so zu verwenden, wie er ist.

.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
    #Normalerweise sind ein Port und ein Volume-Attach erforderlich.

Wieder öffnen

Wird es erneut geöffnet, wenn der Bildschirm neu geladen wird? Wird gefragt, wählen Sie "In Container erneut öffnen".

image.png

Danach wird der Bildschirm neu geladen und Sie können das Bild erweitern und den Container generieren. VSCode-bezogene Installationen werden ebenfalls ausgeführt. Seien Sie also geduldig.

image.png

Überprüfen Sie nach erfolgreichem Start, ob der Knoten ausgeführt wird.

image.png

Zu diesem Zeitpunkt zeigt das VS-Code-Terminal auf das Docker-Container-Terminal Verwenden Sie dieses Terminal grundsätzlich im VS-Code.

App-Entwicklung

npm init und erstelle package.json.

# npm init -y
# nom install -S express

Schreiben Sie als Nächstes den folgenden Code.

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}`);
});

Ich werde es versuchen.

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

Lassen Sie uns in diesem Zustand eine Verbindung vom Host herstellen.

Wenn es gut angezeigt wird, ist es vollständig.

image.png

Danach können Sie mit der Entwicklung auf die gleiche Weise wie mit normalem VS-Code fortfahren.

Bereitstellung für andere Entwickler

Selbst wenn Sie es für andere Entwickler bereitstellen möchten, können Sie es problemlos erstellen, solange Sie einen Entwicklungscontainer erstellen.

Sie benötigen lediglich VS-Code und Erweiterungen für die Remote-Entwicklung.

Andere Einstellungen als Node.js.

Diesmal habe ich es mit node.js gemacht, aber die grundlegende Verwendung ist für Python, Ruby und Java dieselbe.

Wenn Sie nur die folgenden zwei Punkte beachten, werden Sie grundsätzlich keine Probleme haben.

schließlich

Da die Umgebung und Version für jeden Container getrennt werden können, Es ist sicherer, Versionsprobleme zu lösen, als xEnv zu verwenden.

Wenn Sie Docker als Entwicklungsumgebung verwenden, müssen Sie nur einen einfachen JSON schreiben.

Wenn Sie VS Code verwenden, können Sie devcontainer verwenden, um die Erstellung Ihrer Umgebung zu vereinfachen.

Recommended Posts

Verwenden Sie noch anyenv? Lassen Sie uns mit Docker einfacher gehen?
[Gute Nachrichten] Sie können immer noch mit Java 8 gehen !!
Sie müssen winpty mit Docker Exec [Windows] verwenden.
Verwenden von PlantUml mit Honkit [Docker]
Ist die von Ihnen verwendete Version von Elasticsearch mit Java 11 kompatibel?
Verwandeln Sie Java-Anwendungen mit Jib ganz einfach in Docker
Verwenden von cuda11.0 mit pytorch mit Docker