본문 바로가기
DevOps/Docker

Dockerfile 기본 문법

by Mecodata 2023. 2. 3.

- FROM = 어떤 이미지 파일을 기반으로 도커 이미지를 생성할 것인지 정의

ex) FROM openjdk:8 = jdk1.8(Java 8)을 base 이미지로 사용

 

- WORKDIR = 작업 디렉터리 설정 (리눅스 cd 명령어와 같은 역할)

- LABEL maintainer = 관리자 정보 입력

- ENV = 컨테이너 내의 환경변수 설정

※ docker 이미지 파일 생성 시 .env 파일도 포함시키는 방법 = COPY .env /app/.env

 

- RUN = 이미지 생성 시 필요한 명령 실행 

ex) RUN npm install 

 

- ADD(COPY) [복사할 파일이 위치한 경로] [복사한 파일이 위치할 경로] = 로컬에 있는 파일을 복사하여 Docker 이미지에 추가

- EXPOSE = Docker container가 외부와 통신할 때 사용할 포트를 지정

- ENTRYPOINT, CMD = 컨테이너 실행시 항상 실행되어야 하는 명령 설정

ex) ENTRYPOINT ["npm", "start"] = 컨테이너 실행시 npm start 실행 (React)

      ENTRYPOINT ["java","-jar", "A.jar"] = 컨테이너 실행시 java -jar A.jar 실행 (Spring)

JAVA

FROM openjdk:8 // Java8을 기본 이미지로 설정
WORKDIR /app // 작업 디렉터리 위치 설정
ADD target/A-0.0.1-SNAPSHOT.jar A.jar // 로컬에 있는 jar 파일을 새로 생성할 이미지 파일에 A.jar로 복사
ENTRYPOINT ["java","-jar", "A.jar"] // java -jar 명령어로 해당 jar파일(A.jar) 실행 (스프링 서버 실행)

React

FROM node:alpine // Node.js 기본 버전 적용
WORKDIR /app // 작업 디렉터리 위치 설정
COPY package.json . // package.json 복사
RUN npm install // package.json에 있는 라이브러리들 설치
COPY .env /app/.env // app/.env에 .env파일 복사
COPY . . // 현재 위치(Dockerfile 위치)에 있는 파일들 모두 복사
EXPOSE 3000 // 'docker run -P' 명령 시 3000포트를 호스트 운영체제로 오픈
CMD [ "npm", "start" ] // 컨테이너 실행 시 npm start 명령 자동 실행

Node.js

FROM node:18.15.0 // Node.js 18.15.0 버전 적용
RUN mkdir -p /app // app 폴더 생성
WORKDIR /app // 작업 디렉터리 위치 설정(/app)
COPY package*.json . // package.json & package-lock.json 복사
RUN npm install // package.json에 있는 라이브러리들 설치
RUN npm install -g pm2 // pm2 모듈 설치
COPY .env .env // app/.env에 .env파일 복사
COPY . . // 현재 위치(Dockerfile 위치)에 있는 파일들 모두 복사
EXPOSE 3000 // 'docker run -P' 명령 시 3000포트를 호스트 운영체제로 오픈
CMD [ "pm2-runtime", "start", "index.js" ] // 컨테이너 실행 시 pm2-runtime start index.js 명령 실행

'DevOps > Docker' 카테고리의 다른 글

Docker Volume  (0) 2023.09.12
docker-compose  (0) 2023.09.05
Docker 기본 명령어  (0) 2022.12.21

댓글