
Docker를 사용하여 애플리케이션을 실행하는 데 필요한 모든 항목을 애플리케이션에 포장하고 하나의 패키지(컨테이너)로 제공할 수 있습니다.
요약하면 Dockerizing은 Docker 컨테이너를 사용하여 애플리케이션을 패킹, 배포 및 실행하는 프로세스입니다.
Docker는 사용하기 쉽습니다. 애플리케이션 배포 방식을 단순화하여 소프트웨어의 소스 코드로 배포하지않고 디스크 이미지로 배포합니다.
재현 가능한 환경을 만들 수 있습니다.
Docker는 응용 프로그램과 그 기능을 다시 만드는 데 필요한 작업 환경을 만듭니다. 모든 것은 컨테이너에 래핑하면 빌드하는 애플리케이션이 마찰 없이 다른 장치에서 실행됩니다.
Docker 컨테이너는 커널에서 실행되는 샌드박스환경으로 몇초 만에 컨테이너를 만들고 실행할 수 있습니다
node로 3000번 포트에 서버를 열고 화면에 'Hello World!'를 출력하는 노드 앱을 도커 이미지로 만든 뒤 도커 컨테이너로 실행해서 Localhost 5000번 포트로 접속시 화면에 'Hello World!'가 출력되게하기
{
"name": "docker_web_app",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "First Last <first.last@example.com>",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.1"
}
}
애플리케이션과 의존성을 알려주는 package.json 파일을 생성합니다. 그리고 npm install을 입력합니다.
const express = require("express");
const PORT = 3000;
const app = express();
app.get("/", (req, res) => {
res.send("Hello World");
});
app.listen(PORT, console.log(`Running on http://localhost:${PORT}`))
Express 프레임워크로 웹앱을 정의하는 server.js를 생성합니다. 포트는 '3000'입니다.
FROM node:latest //node.js최신 버전을 사용합니다.
# 앱 디렉터리 생성
WORKDIR /usr/src/app // 이미지 안에 애플리케이션 코드를 넣기위한 디렉터리를 생성합니다.
# 앱 의존성 설치
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해
# 와일드카드를 사용
COPY package*.json ./ // 이 이미지에는 node.js와 npm이 설치되어있기 때문에 'npm install'로 앱의 의존성을 설치합니다.
RUN npm install
# 프로덕션을 위한 코드를 빌드하는 경우
# RUN npm ci --only=production
# 앱 소스 추가
COPY . . //이미지 내에 앱의 소스코드를 넣기 위해 COPY지시어를 사용합니다.
EXPOSE 3000 //앱이 3000번 포트에 바인딩 되어있으므로 EXPOSE 지시어를 사용해서 docker 데몬에 매핑합니다.
CMD [ "node", "server.js" ] // 서버를 구동하도록 명령어 'node server.js'를 실행시킵니다.
node_modules
npm-debug.log
docker build . -t <이름>
docker run -d -p 5000:3000 hello-world
도커로 이미지를 빌드하고 컨테이너를 생성했을 때, 도커 컨테이너 내부에서는 3000번 포트로 'Hello Worl!'를 화면에 띄워주는 앱이 실행되고
이것을 호스트의 5000번에 매핑해서 사용자가 localhost:5000으로 접근 했을 시
컨테이너의 3000번 포트에서 실행되고 있는 프로그램을 볼 수 있게 됩니다.
https://seohyun0120.tistory.com/entry/Nodejs-%EC%9B%B9-%EC%95%B1%EC%9D%98-%EB%8F%84%EC%BB%A4%EB%9D%BC%EC%9D%B4%EC%A7%95
https://cocoon1787.tistory.com/749