diff --git a/.devcontainer/jetbrains/Dockerfile b/.devcontainer/jetbrains/Dockerfile new file mode 100644 index 000000000..8d1dd0395 --- /dev/null +++ b/.devcontainer/jetbrains/Dockerfile @@ -0,0 +1,17 @@ +ARG VARIANT=17-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/java:0-${VARIANT} + +RUN groupadd -r developer +RUN useradd -r -g developer -d /home/developer -s /bin/bash developer +RUN mkdir -p /home/developer && chown developer:developer /home/developer + +ARG NODE_VERSION="none" +RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi + +ARG USER=vscode +VOLUME /home/$USER/.m2 +VOLUME /home/$USER/.gradle + +ARG JAVA_VERSION=17.0.7-ms +RUN sudo mkdir /home/$USER/.m2 /home/$USER/.gradle && sudo chown $USER:$USER /home/$USER/.m2 /home/$USER/.gradle +RUN bash -lc '. /usr/local/sdkman/bin/sdkman-init.sh && sdk install java $JAVA_VERSION && sdk use java $JAVA_VERSION' diff --git a/.devcontainer/jetbrains/devcontainer.json b/.devcontainer/jetbrains/devcontainer.json new file mode 100644 index 000000000..b562abc25 --- /dev/null +++ b/.devcontainer/jetbrains/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Petclinic", + "dockerFile": "Dockerfile", + "runArgs": [ + "--mount", + "type=volume,source=maven-repo,target=/home/developer/.m2", + "--mount", + "type=volume,source=gradle-home,target=/home/developer/.gradle", + "--env", + "GRADLE_USER_HOME=/home/developer/.gradle" + ], + "initializeCommand": "./.devcontainer/jetbrains/initializeCommands.sh", + "postCreateCommand": "sudo chown developer:developer /home/developer/.m2 /home/developer/.gradle", + "remoteUser": "developer", + "features": { + "docker-in-docker": "latest" + }, + "forwardPorts": [8080] +} diff --git a/.devcontainer/jetbrains/initializeCommands.sh b/.devcontainer/jetbrains/initializeCommands.sh new file mode 100755 index 000000000..58d58b838 --- /dev/null +++ b/.devcontainer/jetbrains/initializeCommands.sh @@ -0,0 +1,3 @@ +#!/bin/bash +docker volume inspect maven-repo >/dev/null 2>&1 || docker volume create maven-repo +docker volume inspect gradle-home >/dev/null 2>&1 || docker volume create gradle-home diff --git a/.devcontainer/Dockerfile b/.devcontainer/vscode/Dockerfile similarity index 100% rename from .devcontainer/Dockerfile rename to .devcontainer/vscode/Dockerfile diff --git a/.devcontainer/devcontainer.json b/.devcontainer/vscode/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer.json rename to .devcontainer/vscode/devcontainer.json