[DOCKER] Lassen Sie mich VS Code Remote Development + Java-Entwicklung in einer Proxy-Umgebung durchführen

Hallo **.

Plötzlich möchten Sie mit VS Code entwickeln und die Ausführungsumgebung ist Java in einem Container. Aber es gibt einige, die im Weg stehen. Ja, es ist Proxy.

Im Fall eines internen Proxys denke ich, dass die Situation für jedes Unternehmen anders ist, aber als erfolgreiches Beispiel, wenn es Ihnen ein wenig hilft ...

: Muskel: Motivation

: Computer: Betriebsüberprüfungsumgebung (Host)

: hand_splayed: Prämisse

: file_folder: Zu vorbereitende Dateien

Dockerfile

Klicken Sie hier für "Dockerfile" in der Remote-Entwicklungsumgebung.

${workspaceFolder}/.devcontainer/Dockerfile


FROM adoptopenjdk/openjdk11:jdk-11.0.7_10-centos

# This Dockerfile adds a non-root user with sudo access. Use the "remoteUser"
# property in devcontainer.json to use it. On Linux, the container user's GID/UIDs
# will be updated to match your local UID/GID (when using the dockerFile property).
# See https://aka.ms/vscode-remote/containers/non-root-user for details.
ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=${USER_UID}

ARG MAVEN_VERSION=3.6.1
ARG MAVEN_SHA=b4880fb7a3d81edd190a029440cdf17f308621af68475a4fe976296e71ff4a4b546dd6d8a58aaafba334d309cc11e638c52808a4b0e818fc0fd544226d952544

#Proxy-Einstellungen
# devcontainer.Mit json angeben
# see https://code.visualstudio.com/docs/remote/containers-advanced#_option-2-use-an-env-file
ARG PROXY=${PROXY}
ENV http_proxy=${PROXY}
ENV https_proxy=${PROXY}
ENV HTTP_PROXY=${PROXY}
ENV HTTPS_PROXY=${PROXY}

RUN echo "building..." \
    #
    # Create a non-root user to use if preferred
    # see https://aka.ms/vscode-remote/containers/non-root-user.
    && groupadd --gid ${USER_GID} ${USERNAME} \
    && useradd -s /bin/bash --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} \
    #
    # Install Maven
    && mkdir -p /usr/share/maven /usr/share/maven/ref \
    && curl -fsSL -o /tmp/apache-maven.tar.gz https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
    && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
    && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
    && rm -f /tmp/apache-maven.tar.gz \
    && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn \
    #
    # Maven User Settings
    # /home/vscode/.m2/Erstellen Sie den Eigentümer und ändern Sie ihn in den Benutzer vscode
    && mkdir /home/${USERNAME}/.m2 \
    && chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.m2

#Maven Pfadeinstellung
ENV MAVEN_HOME /usr/share/maven

Ich benutze Maven für die Entwicklung, also habe ich Maven installiert. Da es sich bei der Produktionsausführungsumgebung um die CentOS 7-Serie handelt, verwendet die Remote Development-Umgebung auch die CentOS 7-Serie + Java als Basisimage.

Es gibt "$ {PROXY}", aber dies wird von "devcontainer.json" übergeben, das später beim Erstellen des Images beschrieben wird. Ich dachte, es wäre zum Zeitpunkt der Erstellung eine Art Einbettung in das Image, aber da ich nicht vorhabe, das Image direkt in der Entwicklungsumgebung jeder Person freizugeben, entschied ich, dass es in diesem Zustand kein Problem geben würde.

devcontainer.json

Als nächstes folgt die Konfigurationsdatei der Remote Development-Umgebung "devcontainer.json".

json-doc:${workspaceFolder}/.devcontainer/devcontainer.json


{
  "name": "Sample Project",
  "dockerFile": "Dockerfile",

  //Einstellungen zum Zeitpunkt der Docker-Erstellung (Image-Erstellung)
  // see - https://github.com/microsoft/vscode-remote-release/issues/46
  "build": {
    "args": {
      // TODO:Je nach Umgebung beschrieben
      "PROXY": "http://USER:PASS@HOST:PORT"
    }
  },

  //VS Code-Standardeinstellungen beim Erstellen eines Containers (beachten Sie, dass die Arbeitsbereichseinstellungen gewinnen)
  "settings": { 
    "terminal.integrated.shell.linux": "/bin/bash",
    "java.home": "/opt/java/openjdk",
    // Language Server
    // see - https://github.com/redhat-developer/vscode-java/wiki/Using-a-Proxy
    // TODO:Je nach Umgebung beschrieben
    "java.jdt.ls.vmargs": "-Dhttp.proxyHost=HOST -Dhttp.proxyPort=PORT -Dhttp.proxyUser=USER -Dhttp.proxyPassword=PASS -Dhttps.proxyHost=HOST -Dhttps.proxyPort=PORT -Dhttps.proxyUser=USER -Dhttps.proxyPassword=PASS",
    // see - https://github.com/redhat-developer/vscode-java/issues/399#issuecomment-355113311
    "java.import.gradle.enabled": false
  },

  //VS-Code-Erweiterung installiert, wenn der Container erstellt wird (angegeben durch ID)
  "extensions": [
    // Java
    "vscjava.vscode-java-pack",  // Java Extension Pack
  ],

  //Befehle, die nach der Containererstellung ausgeführt werden
  "postCreateCommand": "./.devcontainer/postCreateCommand.sh",

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  "forwardPorts": [
    8090 // app
  ],

  //Anmeldebenutzer des Docker-Containers
  "remoteUser": "vscode",
}

Der Punkt ist "java.jdt.ls.vmargs" in "settings". Wie Sie auf der folgenden Seite sehen können, müssen Sie PROXY für "Java Language Server" einstellen.

Using a Proxy - redhat-developer/vscode-java - GitHub

Maven-Konfigurationsdatei

Maven konfiguriert die Proxy-Einstellungen in Maven.

Ich habe diese Dateien in den Ordner ".devcontainer" gelegt. Kopieren Sie es mit der später beschriebenen Shell in den Ordner ".m2" ("/ home / vscode / .m2") direkt unter dem Benutzer "vscode".

settings.xml


<proxies>
  <proxy>
    <!-- TODO:Je nach Umgebung beschrieben-->
    <id>sample</id>
    <active>true</active>
    <protocol>http</protocol>
    <host>proxy.sample.com</host>
    <port>1234</port>
    <username>user</username>
    <password>{encrypted-password=}</password>
    <nonProxyHosts>localhost</nonProxyHosts>
  </proxy>
</proxies>

settings-security.xml


<?xml version="1.0" encoding="UTF-8"?>
<settingsSecurity>
    <!-- TODO:Je nach Umgebung beschrieben-->
    <master>{encrypted-master-password=}</master>
</settingsSecurity>

Referenz: Passwortverschlüsselung --Maven

Schale

sh:${workspaceFolder}/.devcontainer/postCreateCommand.sh


#!/usr/bin/bash

#Erstverarbeitung
echo ''
echo '--------------------------------------------'
echo ' Init'
echo '--------------------------------------------'
#Einstellungen / Basisinformationen
MAVEN_SETTING_DEST=`realpath ~/.m2/`
echo 'Grundinformation'
echo "Arbeitsverzeichnis: `pwd`"
echo "maven: `mvn --version`"

#Kopieren Sie die Maven-Konfigurationsdatei
echo ''
echo '--------------------------------------------'
echo ' Copy Maven settings files'
echo '--------------------------------------------'
echo 'Der Kopiervorgang beginnt.'
cp ./.devcontainer/settings.xml ./.devcontainer/settings-security.xml ${MAVEN_SETTING_DEST}
echo 'Der Kopiervorgang ist abgeschlossen.'
ls -la ${MAVEN_SETTING_DEST}

#Verarbeitung beenden
echo ''
echo '--------------------------------------------'
echo ' Exit'
echo '--------------------------------------------'
echo 'Der Prozess endet.'
exit 0

Die durch postCreateCommand in .devcontainer / devcontainer.json angegebene Shell. Es wird getroffen, nachdem der Container erstellt wurde.

Was den Inhalt betrifft, haben wir die Maven-Einstellungsdateien in den Ordner ".m2" ("/ home / vscode / .m2") direkt unter dem Benutzer "vscode" home kopiert. Wenn das alles ist, sollten Sie es direkt in postCreateCommand von devcontainer.json schreiben, ohne es in die Shell zu schneiden ...: angel:

: Rakete: Start

Alles was Sie tun müssen, ist es normal zu starten! Ich werde die Details weglassen, weil es sich von der Hauptzeile unterscheidet, aber ungefähr ...

--Installieren Sie die Erweiterung VS Code Remote --Container (vscode: extension / ms-vscode-remote.remote-container) und

nicht wahr!

Derzeit scheint sich der Ordner ".devcontainer" direkt unter dem Stammordner des VS Code-Arbeitsbereichs zu befinden.

: end: Am Ende

Übrigens ... Ich hatte nicht genug Maschinenspezifikationen, also gab ich es endlich auf, mich mit dieser Methode zu entwickeln: angel: Ich denke jedoch, dass es sehr praktisch ist, da es einfacher ist, die Umgebung sofort zu erstellen. Wenn es also kein Problem mit den Spezifikationen gibt, sollten Sie es auf jeden Fall positiv bewerten!

Ich hoffe, es hilft Menschen, die sich in einer Proxy-Umgebung befinden + VS Code Remote Development + Java.

Na dann!

: link: link

Recommended Posts

Lassen Sie mich VS Code Remote Development + Java-Entwicklung in einer Proxy-Umgebung durchführen
Java Spring-Umgebung in vs Code
Java-Entwicklungsumgebung (Mac, VS Code)
Bereiten Sie die Java-Entwicklungsumgebung mit VS Code vor
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code auf dem Mac
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Erstellung einer Java-Webanwendungsentwicklungsumgebung mit VS-Code (struts2)
In einer VM-Umgebung erstellte Java-Anwendungsentwicklungsumgebung
Java-Entwicklungsumgebung
Punkte, die beim Erstellen der VS Code- und Java-Entwicklungsumgebung hängen bleiben
[Anfänger] Installieren Sie das Java-Entwicklungstool in der Cloud9-Entwicklungsumgebung.
[Mac] Java in Visual Studio Code installieren (VS Code)
Memo zur Java-Entwicklungsumgebung
Schreiben Sie keinen Code, wenn (isAdmin == true) in Java
Java Entwicklungsumgebung Konstruktion
Erstellen Sie eine Java-Programmentwicklungsumgebung mit Visual Studio Code
Erstellung einer Webanwendungsentwicklungsumgebung in Java (für unerfahrene Personen)
Die Geschichte der Verwendung von Java Input Waiting (Scanner) mit VSCode
[Entwicklungsprotokoll ⑬] Lassen Sie 0 nicht in das Formular eingeben !!
Erstellen Sie mit Java + Spring eine Web-APP-Entwicklungsumgebung mit Visual Studio Code
Java-Entwicklungsumgebung (Mac, Eclipse)
JavaFX-Umgebungskonstruktion in Java 13
Java mit Visual Studio Code
Schreiben Sie Java8-ähnlichen Code in Java8
Erste Java-Entwicklung in Eclipse
[Eclipse Java] Memo zum Einstellen der Entwicklungsumgebung
Führen Sie Scala's Option.or Null in Java aus
Mach HelloWorld mit Java / IntelliJ / Gradle
Bereiten Sie die Java-Entwicklungsumgebung mit Atom vor
Erstellung der Play Framework 2.6 (Java) -Entwicklungsumgebung
[Java] Verwenden Sie nicht "+" im Anhang!
Informationen zur aktuellen Entwicklungsumgebung (Java 8)
Erstellen Sie Java mit Mac vs Code
Erstellen einer Java-Entwicklungsumgebung (für Mac)
Verwenden Sie Stream in Java?
Installieren Sie die Java-Entwicklungsumgebung auf dem Mac
Aufbau einer JSP + Eclipse + Jetty-Entwicklungsumgebung, die selbst Java-Anfänger ausführen können
Eine Aufzeichnung zum Einrichten einer Java-Entwicklungsumgebung mit Visual Studio Code
Versuchen Sie das Remote-Debuggen von Java mit Remote-Containern in Visual Studio Code Insiders