Docker를 설치하고 Docker-compose까지 사용해 여러 컨테이너를 관리할 준비가 끝났다. docker-compose 파일도 잘 작성했다.
다만, docker-compose.yml 파일 작성 전에 dockerfile이 구버전으로 작성되어 있어 달라진 디렉토리로 수정하고 이미지도 수정하여야 한다. Dockerfile을 작성할 김에 탐구하면서 천천히 진행해보려 한다.
Dockerfile은 Docker 이미지를 생성하기 위한 설명서 역할을 한다. 개발자가 애플리케이션을 컨테이너로 배포할 수 있도록 필요한 명령어와 설정을 선언적으로 작성하는 파일이다.
Dockerfile을 사용하면 애플리케이션 실행 환경을 정확히 정의할 수 있어, 어디서나 동일하게 실행 가능한 컨테이너를 만들 수 있다.
Dockerfile은 명령어와 인수로 이루어진다.
아래는 자주 쓰는 명령어들에 대한 설명이다.
RUN apt-get update && apt-get install -y curlRUN npm installCMD ["node", "app.js"]ENTRYPOINT ["java", "-jar", "/app.app.jar"]다음은 Dockerfile 예제를 ChatGPT에게 부탁하여 몇개 생성해보았다.
FROM node:18-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/app.jar /app/app.jar
EXPOSE 8080
CMD ["java", "-jar", "/app/app.jar"]
FROM node:18-alpine as builder
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker build -t <image_name>:<tag> .
docker run <image_name>:<tag>
docker images