1 minute read

도커 이미지 다루기 : Dockerfile 문법

1. Dockerfile 문법

도커파일문법 API 링크


    # [지시어] [인자값] 구성
    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/

Categories:

Updated:

Comments