오늘

Dockerfile 본문

docker

Dockerfile

jhw715 2023. 5. 14. 01:09

Dockerfile

도커 이미지를 구성하는데 필요한 정보들을 가지고 있으며, Dockerfile을 통해 도커 이미지를 생성할 수 있다.

실제 파일명을 "Dockerfile"로 작성해야 한다.

 

# FROM : 베이스가 될 도커 이미지 선택 
# WORKDIR : 설정 이후 사용될 명령어에 대한 작업 디렉토리를 설정
#          [ RUN, CMD, ENTRYPOINT, COPY, ADD, Dockerfile, WORKDIR, Dockerfile ]
# COPY : 파일 복사 COPY <src>... <dest>
# RUN : 도커 이미지 실행시 수행할 command
# VOLUME : 마운트 지점 생성
# EXPOSE : 도커 이미지에서 오픈할 포트
# CMD : 컨테이너를 생성할때 실행되는 명령어, 여러번 작성해도 마지막으로 선언한 부분만 동작

 

그 외 자세한 설정값들은 공식문서를 참조 https://docs.docker.com/engine/reference/builder/

 

Dockerfile reference

 

docs.docker.com

 

++++ Dockerfile example

1. nodejs [ API Server ] Image를 빌드할 때 사용하는 Dockerfile

더보기
# node:18-alpine : node v18이 기본적으로 설치되어 있다.
# https://hub.docker.com/_/alpine 
FROM node:18-alpine

# 작업 디렉토리 설정
WORKDIR /app/apiserver

# COPY <src>... <dest>
COPY . .

# package.json 에 저장된 의존성 패키지 설치
RUN npm install --silent
# 도커 이미지 내부에서 pm2를 사용하기 위해 설치
RUN npm install pm2 -g

# VOLUME : 서버의 로그를 저장할 디렉토리를 마운트
VOLUME /app/apiserver/logs

# 2087 포트 오픈
EXPOSE 2087

# pm2 설정파일을 사용하여 서버 실행
CMD [ "pm2-runtime", "start", "myloaService.config.js", "env_development" ]

 

2. react [ Front ] Image 를 빌드할 때 사용하는 Dockerfile

더보기
# node:18-alpine : node v18이 기본적으로 설치되어 있다.
# https://hub.docker.com/_/alpine 
# setting stage "builder"
FROM node:18-alpine AS builder

# set working directory
WORKDIR /app

# copy package.json
COPY package.json package.json 

# install node modules
RUN npm install --production --legacy-peer-deps

# src files
COPY . .

# create production build
RUN npm run build

# deploy base image NGINX 
FROM node:18-alpine

RUN npm install -g serve

# copy build file from builder stage
COPY --from=builder /app/build /app/react/build

# set working directory
WORKDIR /app/react

EXPOSE 3000

CMD [ "serve" "-l" "3000" "-s" "build"]

'docker' 카테고리의 다른 글

docker compose  (0) 2023.05.14
.dockerignore  (0) 2023.05.14
docker Image 배포  (0) 2023.05.06
Comments