- 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 |
댓글