[Docker] 도커 이미지 다루기 : Dockerfile 문법
도커 이미지 다루기 : Dockerfile 문법
1. Dockerfile 문법
# [지시어] [인자값] 구성
FROM node:12-alpine
RUN apk add --no-cache python3 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
# 환경 변수 설정
FROM busybox
ENV FOO=/bar # 환경 변수 설정
WORKDIR ${FOO} # 환경 변수 불러오기1 /bar
ADD . $FOO # 환경 변수 불러오기2 DD . /bar
COPY \$FOO /quux # 환경 변수 불러오기3 COPY $FOO /quux
# 기본값 default value
FROM busybox
ARG user1=someuser
ARG buildno=1
2. 실습 Dockerfile (nodejs-server)
# nodejs-server
#
# build:
# docker build --force-rm -t nodejs-server .
# run:
# docker run --rm -it --name nodejs-server nodejs-server
# FROM : 베이스 이미지 사용
FROM node:16
# LABEL : 이미지의 메타 데이터
LABEL maintainer="FastCampus Park <fastcampus@fastcampus.com>"
LABEL description="Simple server with Node.js"
# WORKDIR : Set working directory, 이미지 내에서 설정하는 기본 경로 설정,
WORKDIR /app
# Install app dependencies
# COPY : [source:호스트 소스] [destination:이미지상에서 경로]
COPY package*.json ./
# RUN : 컨테이너 상에서 해당 명령어를 실행 한다.
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# COPY : [source:호스트 소스] [destination:이미지상에서 경로]
# . . : 현재 디렉토리상의 모든 소스를 이미자 상에 경로에 바로 복사해라
COPY . .
# EXPOSE : 외부에 노출되는 Port 번호 8080 포트를 사용 -p 8080
EXPOSE 8080
# CMD : 해당 이미지를 가지고 컨테이너를 실행할때 어떤 명령어를 실행할지 설정
# 베열 -> [ "node", "server.js" ]
# 문자열 -> "node server.js"
CMD [ "node", "server.js" ]
3. 엔트리 포인트 (ENTRYPOINT)
- CMD 와 같음 = ENTRYPOINT
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2
4. ADD
- COPY 와 같음 = ADD ( 다만 정규표현식 사용가능 )
ADD test.txt /absoluteDir/
ADD arr[[]0].txt /mydir/
Comments