본 내용은 Microsoft에서 제공하는 Docker 자습서 내용을 정리한 글입니다.
원문과 내용이 비슷하지만, Docker를 접하기에 아주 유용한 문서로 개인 학습 및 정보공유 차원에서 작성합니다.
Dockerfile
을 사용해야 함Dockerfile
은 컨테이너 이미지를 만드는 데 사용되는 텍스트 기반 명령 스크립트package.json
파일과 동일한 폴더에 다음 내용으로 Dockerfile
이라는 파일을 생성
FROM node:12-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "/app/src/index.js"]
Dockerfile
이 있는 디렉터리로 이동하고 $ docker build
명령을 사용하여 컨테이너 이미지를 빌드
$ docker build -t getting-started .
이 명령은 Dockerfile
을 사용하여 새 컨테이너 이미지를 빌드한 것, 빌드하면서 많은 계층이 다운로드 되었는데 이는 node:12-alpine
이미지에서 시작하도록 명령했기 때문, 이 컴퓨터엔 해당 이미지가 없어 이미지를 다운로드 한 것
이미지가 다운로드 된 후 App에서 yarn
을 복사하고 사용하여 애플리케이션 종속성을 설치함. 또한 CMD
지시문은 해당 이미지에서 컨테이너를 시작할 떄 실행할 기본 명령을 지정함
마지막으로 -t
플래그가 이미지에 '태그' 를 지정함. 이는 사람이 읽을 수 있는 최종 이미지 이름이라고 생각하면 됨. 이미지 이름을 getting-started
로 지정했기 때문에 컨테이너를 실행할 때 해당 이미지를 가리킬 수 있음
docker build
명령의 끝에 있는 .
는 현재 디렉터리에서 Dockerfile
을 찾도록 Docker에 지시합니다.
이미지는 준비되었으므로 애플리케이션을 실행해야 합니다.
이는 docker run
명령을 사용하면 됩니다.
docker run
명령을 사용하여 컨테이너를 시작하고 방금 만든 이미지의 이름을 지정합니다.
$ docker run -dp 3000:3000 getting-started
-d
플래그 : 백그라운드에서 '분리' 모드로 새 컨테이너를 실행
-p
플래그 : 호스트의 포트 3000과 컨테이너의 포트 3000간에 매핑을 만들어 냄 이 경우에 포트 매핑이 없으면 애플리케이션에 액세스 할 수 없음
웹 브라우저 http://localhost:3000 을 열면 App이 표시 됨
정상 작동을 테스트함