📌 TL;DR:
이번에는 Dockerfile을 직접 만들어 보고,
Node.js 애플리케이션을 컨테이너에서 실행해볼 거예요!
1. Dockerfile이란?
Dockerfile은 컨테이너 환경을 설정하는 레시피 같은 거예요.
어떤 프로그램을 설치할지, 어떻게 실행할지를 정해요.
예제: Node.js를 위한 Dockerfile
# 1. Node.js를 기본 이미지로 사용
FROM node:18
# 2. 작업할 디렉토리 설정
WORKDIR /app
# 3. 필요한 파일 복사 후 패키지 설치
COPY package.json ./
RUN npm install
# 4. 나머지 파일 복사
COPY . .
# 5. 애플리케이션 실행
CMD ["node", "server.js"]
2. Docker를 활용한 Node.js 실행하기
1) 프로젝트 폴더 만들기
mkdir my-docker-app && cd my-docker-app
👉 새로운 프로젝트 폴더 my-docker-app을 만들고, 그 폴더로 이동합니다.
2) package.json 파일 만들기
{
"name": "docker-app",
"version": "1.0.0",
"main": "server.js",
"dependencies": {
"express": "^4.17.1"
}
}
👉 프로젝트에서 사용할 **의존성(패키지)**을 설정하는 파일입니다.
여기서는 express라는 웹 서버 라이브러리를 설치하도록 지정합니다.
3) server.js 파일 만들기
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello, Docker!");
});
app.listen(3000, () => console.log("Server running on port 3000"));
👉 express를 사용하여 간단한 웹 서버를 만듭니다.
- / 경로로 접근하면 "Hello, Docker!" 메시지를 반환합니다.
- 3000번 포트에서 실행됩니다.
4) Docker 이미지 빌드하기
docker build -t my-node-app .
👉 현재 디렉토리(.)의 Dockerfile을 사용해 my-node-app이라는 이름의 Docker 이미지를 생성합니다.
5) 컨테이너 실행하기
docker run -d -p 3000:3000 --name node-container my-node-app
👉 my-node-app 이미지를 사용해 컨테이너를 실행합니다.
- -d : 백그라운드 실행
- -p 3000:3000 : 로컬의 3000번 포트를 컨테이너 내부의 3000번 포트와 연결
- --name node-container : 컨테이너 이름을 node-container로 지정
✅ 브라우저에서 http://localhost:3000에 접속하면 "Hello, Docker!"가 보일 거예요!
3. Docker Compose 활용하기
Docker Compose는 여러 개의 컨테이너를 쉽게 관리하는 도구예요.
docker-compose.yml 파일 만들기
version: '3'
services:
web:
build: .
ports:
- "3000:3000"
실행하기
docker-compose up -d
4. 컨테이너 정리하기
docker stop node-container
docker rm node-container
docker image rm my-node-app
마무리 🎯
이제 Docker로 개발 환경을 쉽게 만들고 실행할 수 있어요! 🎉
✅ Dockerfile로 프로젝트 컨테이너화
✅ docker run, docker-compose up으로 실행
✅ 어디서든 같은 환경 유지 가능
💡 다음 목표? Kubernetes와 CI/CD 배워보기! 🚀
'knowledge🧠 > Cloud ☁️' 카테고리의 다른 글
Kubernetes를 활용한 컨테이너 배포 🚀 (0) | 2025.03.08 |
---|---|
Kubernetes와 CI/CD 배워보기! 🚀 (0) | 2025.03.08 |
Docker로 개발 환경 쉽게 구축하기 (1편) 🐳 (0) | 2025.03.08 |
초보자를 위한 네트워크 보안 용어 쉽게 풀기! 🌐🔒 (2) | 2025.02.28 |
📌 데이터 대사관(Data Embassy)이란? (0) | 2025.02.26 |