- 간단한
node
projectimage
로 찍어내기
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
이런식으로 올린후 접속을 하게되면 아래와 같은 현상이 발생한다.
- 그 이유는
local
에서 접속할 포트 설정을 안해줬기때문Dockerfile
에서EXPOSE
설정은 컨테이너 포트임 해당 포트에 연결할 로컬 포트를run
할때 설정해 줘야 한다.docker run -p 3000:80 imagename
이런식으로 설정하면3000
포트로 접속이 가능해짐