반응형

본 내용은 인프런의 데브위키님의 강의 "개발자를 위한 쉬운 도커" 내용을 바탕으로 정리한 내용입니다.

기존 개발 방식의 문제점

  • 개발자의 PC마다 설치된 언어 및 라이브러리의 버전을 일치시키기 어렵다.
  • 개발 환경과 배포 환경이 다를 경우 배포 시 장애가 발생한다.
  • 새로운 개발자가 합류하면 개발 환경 설정에 오랜 시간이 걸리고, 개발 환경 버전이 변화하면 싱크를 맞추기 어려워 진다.
  • 한 명의 개발자가 여러 개의 프로젝트를 개발할 경우, 각 프로젝트가 사용하는 언어나 라이브러리의 종류가 다를 수 있고 여러 개의 환경을 개발자의 PC 한 대 에서 관리하기는 어렵다.

컨테이너 내부에서 개발 환경 구성

  • 도커를 활용하면 개발자의 PC들과 배포 서버의 환경을 완전히 일치시킬 수 있다.
  • IDE의 원격 개발 환경 기능을 통해 각 컨테이너별로 격리된 개발 환경을 구성할 수 있다.
  • 개발자의 PC에 도커만 설치가 되어도 코드를 개발할 있고 그래서 갖가지 라이브러리나 언어가 설치되지 않아 깔끔하게 유지할 수 있다.

예시 1)

leafy-frontend 애플리케이션 구동 시 리소스 사용량 제한
# 1. easydocker/leafy/leafy-backend 디렉터리 이동 및 소스코드 상태 변경
git reset --hard HEAD ; git clean -fd
# 소스코드 버전 변경
git switch 06-devcontainer
# 2. 로컬 머신에 node.js가 설치되어 있는지 확인
$ node --version
3. VSCode 실행 및 Extension    설치 (ms-azuretools.vscode-docker, ms-vscode-remote.remote-containers)

 

그림 1) VSCode에서 Docker와 Dev Container 추가

  • devcontainer.json 파일은 VSCode가 새로운 개발 환경을 생성할 때 사용하는 파일이다.
  • 같은 devcontainer.json 파일을 사용하면 개발 환경을 동일하게 구성할 수 있다.

예시 2) devcontainer.json 파일

{
    "name": "Leafy-frontend project based node.js",
    "dockerFile": "Dockerfile",
    "forwardPorts": [80],
    "customizations": {
        "vscode": {
            "settings": {},
            "extensions": [
                "dbaeumer.vscode-eslint"
            ]
        }
    },
    "postCreateCommand": "npm install",
    "remoteUser": "node"
}

 
예시 3) Dockerfile(easydocker/leafy/leafy-frontend/.devcontainer/Dockerfile)

FROM node:14
RUN apt update && apt install -y less man-db sudo
ARG USERNAME=node
RUN echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/
$USERNAME \ && chmod 0440 /etc/sudoers.d/$USERNAME

ENV DEVCONTAINER=true

 

그림 2) 컨테이너를 사용하여 개발 환경 구성

반응형

+ Recent posts