Node.js

프론트엔드 개발자가 겉핥기 해보는 Docker + Node.js

milliwonkim 2023. 7. 1. 22:24
반응형
SMALL

도커 용어 정리

- 기본용어

1. Docker

- execution time

- 프로세스 실행

- 컨테이너 하나 당 하나의 프로세스

- docker run으로 만들어짐

2. Container

- 레이어 파일시스템을 사용

- 한 번 레이어를 add하면 삭제 불가능

- 레이어를 스쿼시는 가능

 

다른 레이어들을 삽입하는 각각의 과정

- 각각 레이어들은 캐싱되어 재사용가능, no-cache 옵션도 있음

 

3. Base Images

- 필요한 패키지들과 함께 container를 prebuilt함

- ubuntu, centos etc

 

4. Container Registry

- 태그된 이미지를 쉽게 저장하는 곳

- API 제공, NPM처럼 패키지 있음

- Docker hub, Quay.io, GitHub, Gitlab etc, AWS, GCP, Azure etc

 

5. 빌드 환경

- 도커가 Dockerfile이나 빌드에 필요한 파일들을 찾은 그 빌드환경 => Docker daemon에 모든 컨텍스트가 보내짐 => 안보내려면 .dockerignore 추가필요

- .dockerignore은 .gitignore과 유사함

 

 

- Dockerfile

1. COPY

- 빌드환경에 있던 파일들을 컨테이너 파일시스템으로 복사

COPY package.json /app/

- ADD도 COPY와 비슷하지만, 혹시모르는 상황에 대비해서 COPY를 사용해라

 

- 명령어

1. docker run

- docker run => 새로운 컨테이너를 생성한다.

- run 할 경우, 현재 로컬에 설치된게 없으면 docker hub에서 가져와서 설치한다.

docker run hello-world
docker run node:15.14.0

- Docker Image를 지우려면 Docker Container를 먼저 제거해야한다.

docker rm DOCKER_CONTAINER_ID
docker image rm DOCKER_IMAGE_NAME

2. 도커 이미지를 버저닝하면서 생성

docker build -t carved-rock-fitness/run-controller:v1 .
# or
docker build -t carved-rock-fitness/run-controller:v1.1 .
# ...

후, 특정 버전의 이미지를 실행

docker run --rm -ti carved-rock-fitness/run-controller:v1

--rm: 완료 후 삭제

-ti: 상호작용가능한 터미널을 붙임

--name: 컨테이너 이름 붙임

-p/--port: 호스트 머신으로의 포트를 지정

--network: 네트워크 구성

 

Dockerfile 안의 ARG, ENV

ARG RT_VERSION=15.14.0
FROM node:${RT_VERSION}

RUN env

ARG RT_VERSION

ENV APP_VERSION=3.2.1

RUN env

CMD env

후 도커 이미지 빌드 및 러닝을 하면

docker build . -t argenv
# 혹은 다른버전으로 설치도 가능
docker build . -t argenv:14.0.0 --build-arg RT_VERSION=14.0.0

# 후

docker run --rm argenv

: '
NODE_VERSION=15.14.0
HOSTNAME=a5b0a8e16fa5
YARN_VERSION=1.22.5
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
APP_VERSION=3.2.1
'

--build-arg: 넘길 수 있는 인자들을 정의할 수 있음

# 예시
docker build . -t argenv:14.0.0 --build-arg RT_VERSION=14.0.1 YARN_VERSION=1.22.6

 

반응형
LIST