docker file

이상민·2023년 4월 17일
0

docker

목록 보기
5/19
fastcampus-devops/3-docker-kubernetes/3-dockerfile/nodejs-server$ vim Dockerfile

#
# nodejs-server
#
# build:
#   docker build --force-rm -t nodejs-server .
# run:
#   docker run --rm -it --name nodejs-server nodejs-server
#

FROM node:16
LABEL maintainer="FastCampus Park <fastcampus@fastcampus.com>"
LABEL description="Simple server with Node.js"

# Create app directory
WORKDIR /app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

FROM: 어떤 베이스 이미지를 사용하느지를 결정
LABEL: 이미지의 메타데이터 지정
WORKDIR: 인자를 working dierctory로 설정
COPY: COPY SRC DEST
호스트 os 이미지 상에서의 경로
COPY package*.json ./ => package로 시작해서 .json으로 끝나는 모든 파일을 현재 디렉토리에 복사하라.
/app 에 복사됨(WORKDIR)
RUN: 이미지 build 상에서 해당 명령어 실행
COPY . . -> 현재 디렉토리의 모든 파일을 app 디렉토리로 복사
EXPOSE: PORT NUMBER 지정
CMD: 해당 이미지를 가지고 container를 실행할 때 어떤 명령어를 실행할지를 결정

docker build

$ docker build --force-rm -t nodejs-server .

$ docker images
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
nodejs-server   latest    1c6460fadeaa   18 minutes ago   916MB

docker run

$ docker run -d nodejs-server

$ docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS      NAMES
7b9e9407b3e0   nodejs-server   "docker-entrypoint.s…"   3 seconds ago    Up 2 seconds    8080/tcp   admiring_lalande

localhost

$ curl localhost:8080
curl: (7) Failed to connect to localhost port 8080 after 0 ms: Connection refused

8080 포트가 default로 열려있기는 하지만 접근 불가능

docker run with port

$ docker run -d -p8080:8080 nodejs-server

$ docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                                       NAMES
9173cd6b7dac   nodejs-server   "docker-entrypoint.s…"   6 seconds ago   Up 5 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   mystifying_gagarin

$ curl localhost:8080
Hello World

포트를 지정하고 정상적으로 출력됨

0개의 댓글