Salut **.
Du coup, vous souhaitez développer avec VS Code et l'environnement d'exécution est Java dans un conteneur. Mais il y en a qui font obstacle. Oui, c'est Proxy.
Dans le cas d'un proxy interne, je pense que la situation est différente pour chaque entreprise, mais à titre d'exemple réussi, si cela vous aide un peu ...
Dockerfile
Cliquez ici pour Dockerfile
dans l'environnement de développement à distance.
${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
#Paramètres du proxy
# devcontainer.Spécifiez avec json
# 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/Créer et changer le propriétaire en utilisateur vscode
&& mkdir /home/${USERNAME}/.m2 \
&& chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.m2
#Réglage du chemin Maven
ENV MAVEN_HOME /usr/share/maven
J'utilise Maven
pour le développement, donc j'ai Maven
installé.
De plus, comme l'environnement d'exécution de la production est la série «CentOS 7», l'environnement de développement à distance utilise également la série «CentOS 7» + Java comme image de base.
Il y a $ {PROXY}
, mais cela est passé de devcontainer.json
décrit plus tard lors de la construction de l'image.
Je pensais que ce serait un peu une intégration dans l'image au moment de la construction, mais comme je n'ai pas l'intention de partager l'image directement dans l'environnement de développement de chaque personne, j'ai décidé qu'il n'y aurait pas de problème dans cet état.
devcontainer.json
Vient ensuite le fichier de configuration de l'environnement de développement à distance devcontainer.json
.
json-doc:${workspaceFolder}/.devcontainer/devcontainer.json
{
"name": "Sample Project",
"dockerFile": "Dockerfile",
//Paramètres au moment de la construction du docker (création d'image)
// see - https://github.com/microsoft/vscode-remote-release/issues/46
"build": {
"args": {
// TODO:Décrit en fonction de l'environnement
"PROXY": "http://USER:PASS@HOST:PORT"
}
},
//Paramètres par défaut du code VS lors de la création d'un conteneur (notez que les paramètres de l'espace de travail gagnent)
"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:Décrit en fonction de l'environnement
"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
},
//Extension VS Code installée lors de la création du conteneur (spécifié par ID)
"extensions": [
// Java
"vscjava.vscode-java-pack", // Java Extension Pack
],
//Commandes exécutées après la création du conteneur
"postCreateCommand": "./.devcontainer/postCreateCommand.sh",
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [
8090 // app
],
//Utilisateur de connexion au conteneur Docker
"remoteUser": "vscode",
}
Le point est «java.jdt.ls.vmargs» dans «settings».
Comme vous pouvez le voir sur la page ci-dessous, il semble que vous deviez définir PROXY pour Java Language Server
.
Using a Proxy - redhat-developer/vscode-java - GitHub
Maven configure les paramètres Proxy dans Maven.
J'ai mis ces fichiers dans le dossier .devcontainer
.
Copiez-le dans le dossier .m2
( / home / vscode / .m2
) directement sous la page d'accueil de l'utilisateur vscode
avec le shell décrit plus loin.
settings.xml
<proxies>
<proxy>
<!-- TODO:Décrit en fonction de l'environnement-->
<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:Décrit en fonction de l'environnement-->
<master>{encrypted-master-password=}</master>
</settingsSecurity>
Référence: Password Encryption --Maven
sh:${workspaceFolder}/.devcontainer/postCreateCommand.sh
#!/usr/bin/bash
#Traitement initial
echo ''
echo '--------------------------------------------'
echo ' Init'
echo '--------------------------------------------'
#Paramètres / informations de base
MAVEN_SETTING_DEST=`realpath ~/.m2/`
echo 'Informations de base'
echo "Directeur de travail: `pwd`"
echo "maven: `mvn --version`"
#Copier le fichier de configuration Maven
echo ''
echo '--------------------------------------------'
echo ' Copy Maven settings files'
echo '--------------------------------------------'
echo 'La copie commencera.'
cp ./.devcontainer/settings.xml ./.devcontainer/settings-security.xml ${MAVEN_SETTING_DEST}
echo 'La copie est terminée.'
ls -la ${MAVEN_SETTING_DEST}
#Terminer le traitement
echo ''
echo '--------------------------------------------'
echo ' Exit'
echo '--------------------------------------------'
echo 'Le processus se termine.'
exit 0
Le shell spécifié par postCreateCommand
dans .devcontainer / devcontainer.json
. Il est atteint après la création du conteneur.
En ce qui concerne le contenu, nous avons copié les fichiers de paramètres Maven dans le dossier .m2
( / home / vscode / .m2
) directement sous la page d'accueil de l'utilisateur vscode
.
Si c'est tout, je pense que vous devriez l'écrire directement dans postCreateCommand
de devcontainer.json
sans le couper dans le shell ...: angel:
Tout ce que vous avez à faire est de le démarrer normalement! Je vais omettre les détails car il est différent de la ligne principale, mais en gros ...
--Installez l'extension VS Code Remote --Containers (vscode: extension / ms-vscode-remote.remote-containers) et
Rouvrir dans le conteneur
n'est-ce pas!
À ce stade, il semble que le dossier .devcontainer
devrait être directement sous le dossier racine de l'espace de travail VS Code.
Au fait ... je n'avais pas assez de spécifications de machine, alors j'ai finalement abandonné le développement avec cette méthode: angel: Cependant, je pense que c'est très pratique car cela facilite la création de l'environnement à la fois, donc s'il n'y a pas de problème avec les spécifications, je pense que vous devriez certainement le considérer positivement!
J'espère que cela aide les gens qui sont dans l'environnement Proxy + VS Code Remote Development + Java.
Eh bien!
Recommended Posts