유틸리티 컨테이너

·2023년 2월 21일
0

docker

목록 보기
6/7
post-thumbnail

유틸리티 컨테이너가 왜 필요한가?

어플리케이션 개발에 있어서 적용하는 프로그래밍 언어마다, 개발환경을 설정해주어야 한다. node 서버를 구현하기 위해서는 node.js 개발환경을 설정해주어야 하고, spring 프로젝트를 개발하기 위해서는 spring 개발환경을 설정해주어야 한다. 이러한 개발환경을 설정하는 것이 매번 번거롭기 때문에, 유틸리티 컨테이너를 통해 해당 개발환경이 미리 구성되어 있는 것과 같이 만들 수 있다.

유틸리티 컨테이너 만들기

docker exec 를 활용하여 도커 컨테이너 내부에서 명령어를 실행할 수 있다. 예를 들어, node 이미지를 기반으로 한 node.js 개발환경이 설치된 도커 컨테이너 내부에서 npm install 명령어를 실행할 수 있다. 이를 통해 개발환경 설정을 손쉽게 할 수 있다.

#도커 허브의 node image를 통해 컨테이너를 실행한 경우
docker exec -it [CONTAINER_NAME] npm init

혹은 컨테이너 실행 시, 필요한 개발환경 명령어를 입력하여 실행하는 것도 가능하다. 단 이 경우에는 해당 명령어 실행이 모두 완료되면 컨테이너를 종료시킨다.

#도커 허브의 node image를 통해 컨테이너를 실행한 경우
docker run -it [IMAGE_NAME] npm init

ENTRY POINT

도커 파일에 CMD ["node","--version"] 의 명령어가 있는 경우, 컨테이너를 실행하면 노드의 버전이 출력된다. CMD 가 있음에도 우리가 만약 직접 명령어를 입력하는 경우, CMD 가 무시되고 직접 입력한 명령어가 수행된다. ENTRYPOINT 는 명령어가 무시되지 않고, 직접 입력한 명령어와 함께 수행된다. 물론 해당 실행이 완료되면 컨테이너는 항시 종료되니 주의 할 것.

#docker run test node
FROM node:14-alpine

WORKDIR /app

#CMD 의 node 생략됨
CMD [ "node", "--version" ]
#docker run test --version
FROM node:14-alpine

WORKDIR /app

#ENTRYPOINT는 이어서
ENTRYPOINT [ "node" ]

Docker Componse를 함께 활용하기

docker-compose 를 통해서도 유틸리티 컨테이너를 생성하는 것이 가능하다.

version: '3.8'
services:
  npm:
    build: ./
    stdin_open: true
    tty: true
    volumes:
      - ./:/app
profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글