Home Docker(2)
Post
Cancel

Docker(2)

Docker(1)

  • 간단한 node project image로 찍어내기


Dockerfile

1
2
3
4
5
6
FROM node:14.9.0  # 1
WORKDIR /app  # 2   
COPY . /app # 3
RUN npm install # 4
EXPOSE 80 # 5
CMD ["node","server.js"]  # 6
  • #1 : 해당 프로젝트를 구동 시키는데 필요한 이미지를 가져온다.
    • 여기에서는 node 14.9.0 버전을 사용하였음
  • #2 : 도커 컨테이너의 작업 폴더를 설정한다
    • /app 도커 컨테이너 안의 프로젝트 경로를 해당 루트로 잡는다고 생각하면 될거같다.
  • #3 : 어떤 프로젝트를 이미지로 만들것인지 설정한다 COPY 뒤에 2개의 경로를 설정할 수 있다.
    • 첫번째 경로 : 내가 이미지화 시킬 폴더의 경로응 Dockerfile위치를 기준으로 설정한다
    • 두번째 경로 : 도커 컨테이너 안에 /app 폴더안에 첫번째 경로에 있는 파일을 복사한다고 생각하면 될거같다.
  • #4 : 이미지 구성이 끝나고 추가적으로 실행되어야할 스크립트를 작성한다.
    • 여러개의 이미지가 빌드될때 한번만 실행되어야할 스크립트를 작성한다.
  • #5 : 컨테이너 내부에서 사용할 포트를 설정한다. -public 포트 뒤에 붙는 경로를 설정할 수 있게 해주는 부분
    • docker run -p [local-port]:[container-port] [image-name] 이런 식으로 설정하면 local-port로 접근할시 도커 내부 포트로 연결되게 설정된다.
  • #6 : #5[RUN]은 이미지를 run할때 실행되는 스크립트라고 한다면 CMD는 컨테이너가 실행될때 실행하는 스크립트이다 여기에서는 컨테이너가 띄워질때 노드 서버도 같이 실행을 시켜야 하기 때문에 설정


docker build .

  • 설정한 도커파일 설정으로 image를 만드는 명령어
    • docker build 뒤에 붙는 .는 도커 파일의 위치를 나타낸다 여기에서는 현위치에 있는 도커 파일을 가르킨다.
1
2
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE 
<none>       <none>    72e5231de146   2 hours ago   949MB


이미지 컨테이너에 올리기

  • 이렇게 작성된 이미지를 컨테이너에 올리면 구성이 완료된다.
    • docker run imagename 이런식으로 올린후 접속을 하게되면 아래와 같은 현상이 발생한다.

no_localport

  • 그 이유는 local에서 접속할 포트 설정을 안해줬기때문
    • Dockerfile 에서 EXPOSE 설정은 컨테이너 포트임 해당 포트에 연결할 로컬 포트를 run할때 설정해 줘야 한다.
      • docker run -p 3000:80 imagename 이런식으로 설정하면 3000포트로 접속이 가능해짐

port_setting

This post is licensed under CC BY 4.0 by the author.