반응형
Dockerfile을 이용해 도커 이미지 만드는 방법
- Docker에서 구동할 Node.js 파일을 생성하기
Docker 컨테이너에서 구동할 index.js 파일을 생성하고, npm을 통해 express 모듈을 설치해줍니다.
touch index.js
npm init
npm i express
만들어진 pacakge.json에서 scripts에 start command를 추가해줍니다.
// 생략...
"scripts": {
"start": "node index.js"
},
이제 index.js을 웹 서버로 만들어 5001번으로 들어오는 요청에 대한 응답을 하는 코드를 만들어줍니다.
// index.js
const express = require('express');
const app = express();
const PORT = 5001;
// GET 요청이 들어오면 응답을 보냄
app.use('/', (req, res)=>{
res.send("Server is running");
})
app.listen(PORT, ()=>{
console.log(`Server is on ${PORT}`)
})
- Dockerfile 작성하기
Dockerfile 작성을 통해 스크립트 형식의 도커 이미지 생성을 해봅시다.
FROM node:18
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY ./ ./
EXPOSE 5001
CMD [ "node", "index.js" ]
해당 코드들을 순차적으로 설명하자면,
- baseImage는 node 18 버전을 사용한다.
- 컨테이너 안의 /usr/src/app 디렉토리를 초기 시작 디렉토리로 사용한다.
- package*.json 파일을 디렉토리에 복사한다.
- npm install을 실행한다.
- 5001번 포트를 외부에 오픈한다.
- 컨테이너의 기본 시작값을 node index.js로 설정한다.
- .dockerignore를 통해 build시 ignore 할 것들에 대해 명세하기
git의 gitignore처럼, docker도 dockerignore가 있습니다.
docker build시 node_modules처럼 불필요한 부분은 build에 포함시키지 않기 위함입니다.
# .dockerignore
node_modules
npm-debug.log
Dockerfile
- 해당 작업을 완료하면 다음과 같은 디렉토리 구조를 사용하게 됩니다.
- Dockerfile을 이용한 docker build하기
Dockerfile을 사용하기 위해 Dockerfile이 있는 디렉토리로 이동 후 다음 명령어를 입력합니다.docker build -t server-response ./
Docker image의 이름은 server-response로 이미지를 만들게 됩니다.
성공적이라면 아래와 같은 상태를 볼 수 있습니다.
다음 포스팅을 통해 Docker 이미지를 run 시키는 방법, Docker 컨테이너 내부에 접근하는 방법, docker-compose를 통해 컨테이너간 통신하는 방법을 포스팅해보겠습니다.
'Study & Project ✏️ > Docker' 카테고리의 다른 글
[docker-compose] - node.js docker-compose 예제, docker-compose network간 통신 (0) | 2023.09.11 |
---|---|
[Docker] - node.js Docker build, run, exec example, 예제 (0) | 2023.09.11 |