programing/java

[ java ] devcontainer로 java 프로젝트 기동하기 - 1

궈능비 2023. 2. 12. 22:20
728x90
반응형

자바를 사용할 일이 생겨서 공부한 내용을 글로 남겨두려 합니다.

윈도우 도커는 기본적으로 깔려있다는 전제입니다.


sts를 컴퓨터에 깔기 귀찮아서 devcontainer를 사용해 자바를 사용하고 있습니다.

 

버전은 이렇게 됩니다.

java - 8
gradle - 2.13
vagrant - 16

폴더 구성입니다

이제 기동을 위한 소스코드를 작성해보겠습니다.

 

1. devcontainer 구성

1.1 devcontainer.json 작성하기

2023.02.12 - [programing/infra] - [ devcontainer ] devcontainer.json 이해하기

 

[ devcontainer ] devcontainer.json 이해하기

devcontainer를 사용하면 컴퓨터 환경을 더럽히지 않을 수 있습니다. 가끔 느린게 흠이긴 하지만 꽤 유용하게 사용하고 있기 때문에 devcontainer의 설정파일인 devcontainer.json의 구성을 알아두는 게 좋

kwon-eb.tistory.com

devcontainer.json에 대해 궁금하시다면 이 글을 참고해주세요

 

저는 devcontainer.json을 이렇게 구성했습니다.

{
    "name": "devcontainer-example",
    "dockerComposeFile": "../../docker-compose.yml",
    "service": "app",
    "workspaceFolder": "/workspace",
    "remoteUser": "root",
    "customizations": {
        "vscode": {
            "settings": { 
                "editor.mouseWheelZoom": true,
                "editor.renderWhitespace": "all",
                "workbench.editor.enablePreview": false,
                "terminal.integrated.scrollback": 10000,
                "extensions.ignoreRecommendations": true,
                "java.home": "/docker-java-home",
                "java.jdt.ls.vmargs": "-javaagent:/usr/local/bin/lombok.jar",
                "java.configuration.runtimes": [
                    {
                        "name": "JavaSE-1.8",
                        "path": "/usr/local/sdkman/candidates/java/current",
                        "default" : true
                    }
                ],
                "java.import.gradle.enabled": false
            },
            "extensions": [
                "vscjava.vscode-java-pack",
                "adashen.vscode-tomcat",
                "eamodio.gitlens",
                "mhutchie.git-graph",
                "donjayamanne.githistory",
                "alefragnani.bookmarks",
                "oderwat.indent-rainbow",
                "2gua.rainbow-brackets",
                "redhat.vscode-yaml",
                "arjun.swagger-viewer",
                "42crunch.vscode-openapi",
                "rangav.vscode-thunder-client",
                "pivotal.vscode-boot-dev-pack",
                "gabrielbb.vscode-lombok",
                "vscjava.vscode-gradle"
            ]
        }

    }
}

 

1.2 도커파일 작성하기

저는 microsoft에서 올려준 소스를 참고했습니다.

 

https://github.com/microsoft/vscode-dev-containers/blob/main/containers/java-8/.devcontainer/Dockerfile

 

GitHub - microsoft/vscode-dev-containers: NOTE: Most of the contents of this repository have been migrated to the new devcontain

NOTE: Most of the contents of this repository have been migrated to the new devcontainers GitHub org (https://github.com/devcontainers). See https://github.com/devcontainers/template-starter and ht...

github.com

# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.191.1/containers/java/.devcontainer/base.Dockerfile

ARG VARIANT="16"
FROM mcr.microsoft.com/vscode/devcontainers/java:0-8

# [Option] Install Maven
ARG INSTALL_MAVEN="true"
ARG MAVEN_VERSION=""

# [Option] Install Gradle
ARG INSTALL_GRADLE="true"
ARG GRADLE_VERSION="2.13"

RUN if [ "${INSTALL_MAVEN}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install maven \"${MAVEN_VERSION}\""; fi \
    && if [ "${INSTALL_GRADLE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install gradle \"${GRADLE_VERSION}\""; fi

# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
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

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor > /usr/share/keyrings/yarn-archive-keyring.gpg

# [Optional] Uncomment this section to install additional OS packages.
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
    && apt-get -y install --no-install-recommends tomcat9

RUN ln -s /etc/tomcat9 /usr/share/tomcat9/conf

# [Optional] Uncomment this line to install global node packages.
RUN curl -o /usr/local/bin/lombok.jar https://projectlombok.org/downloads/lombok.jar

제가 작성한 도커파일입니다.

 

2. docker-compose.yml 작성

version: "3.7"

services:
  app:
    container_name: app
    build:
      context: ./devcontainer/.devcontainer
    volumes:
      - ./code:/workspace/code:cached
    ports:
      - "8080:8080"
    command: sleep infinity
    networks:
      - app_networks

volumes:
  data:

networks:
  app_networks:

도커파일의 구조를 보도록 context를 작성하고 서비스 이름을 devcontainer.json에 설정해둔 service랑 맞추기만 하면 끝입니다.

 

기동이 되는지 확인 해보겠습니다.

 

클릭해주세요

 

devcontainer를 선택하고 open 해주세요

 

그러면 이렇게

설정해 준 파일들이 표시된 vscode 창이 새로 열리면 성공입니다.

 

자바 버전이랑 그래들 버전도 확인 가능합니다.

 

그리고 윈도우 도커를 보면

서비스가 기동되고 있는 걸 확인할 수 있습니다.

728x90
반응형