본문 바로가기
programing/java

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

by 궈능비 2023. 2. 12.
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
반응형

댓글