각각의 어플리케이션을 고립된 환경에서 구동할 수 있게 해줌
VM은 운영체제를 포함하고, 컨테이너는 운영체제를 포함하지 않고 컨테이너 엔진이 설치된 HOST OS를 공유한다. 이로 인해, 컨테이너는 VM에 비해 용량이 적다!
컨테이너가 구동되기 위해서는 container Engine이 필요한데, 이러한 컨테이너 엔진 중에 가장 많이 쓰이는 것은 도커이다.
dependency, 환경변수 등 포함
Application을 실행하는 데 필요한 코드, 런타임 환경 등 모든 세팅이 들어있음. 실행되고 있는 application의 상태를 snapshot (변경 불가능)
이미지는 캡쳐 당시 프로젝트 상태를 가짐 (불변)
image를 고립된 환경에서 동작하게 함
이미지 = class
컨테이너 = 인스턴스
(node:20157) ExperimentalWarning: Custom ESM Loaders is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
ReferenceError: exports is not defined in ES module scope
"module": "es2015",
Dockerfile에 어떤 이미지를 만들지 정의한다.
npm ci
를, yarn을 사용한다면 yarn install --immutable --immutable-cache --check-cache
을 사용한다.ENTRYPOINT [ "yarn", "start"]
docker build -f Dockerfile -t [이름] .
docker run -d -p 8080:8080 [이름]
-p
: host 머신-컨테이너 포트 연결함!
빌드가 완료되면 docker ps
명령어를 실행하여 빌드된 어플리케이션이 뜬 것을 확인할 수 있다.
localhost에서 확인하면 빌드 성공!
docker logs -t [hash번호]
: 로그 확인
docker tag [application이름] [계정/repository이름]
docker push [계정/repository이름]
https://github.com/kumsil1006/practice-ci-cd/tree/10-docker-%EC%84%A4%EC%A0%95
https://www.youtube.com/watch?v=LXJhA3VWXFA&t=125s
https://velog.io/@qhgus/Node-Express-TypeScript-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85
https://duck-blog.vercel.app/blog/web/npm-ci-do-how-about-yarn
문제 있을 시 댓글 부탁드립니다!