백엔드-노드

노드 실전

강사: 오백엔드 · 작성자: 이종춘 · 작성일: 2026-07-08 18:20:16 · 조회수: 5

28강. Docker를 이용한 Node.js 프로젝트 컨테이너화
목록으로
28강. Docker를 이용한 Node.js 프로젝트 컨테이너화

이번 강의에서는 Docker를 사용하여 Node.js + MySQL 프로젝트를 동일한 환경에서 실행하는 방법을 배웁니다.

목표: Docker와 Docker Compose를 이용해 개발 환경을 구성하고, 어디서나 동일한 프로젝트를 실행할 수 있습니다.

1. Docker란?

Docker는 애플리케이션과 실행 환경을 컨테이너(Container)로 묶어 실행하는 기술입니다.

장점

개발 환경 통일
배포 간소화
실행 속도 빠름
운영체제 차이 최소화

2. Docker 구조
개발자



Docker Image



Docker Container



Node.js



MySQL

3. Docker 설치

Windows

Docker Desktop 설치

Linux

sudo apt install docker.io

확인

docker --version

4. 프로젝트 구조
project

├── backend
│ server.js
│ package.json

├── frontend

├── Dockerfile

└── docker-compose.yml

5. Dockerfile 만들기
FROM node:22

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm","start"]

6. Docker 이미지 만들기
docker build -t node-app .

확인

docker images

7. 컨테이너 실행
docker run -p 3000:3000 node-app

브라우저

http://localhost:3000

8. Docker Compose

docker-compose.yml

version: "3.9"

services:

node:

build: .

ports:

- "3000:3000"

depends_on:

- mysql

mysql:

image: mysql:8.0

restart: always

environment:

MYSQL_ROOT_PASSWORD: 1234

MYSQL_DATABASE: node_db

ports:

- "3306:3306"

9. 실행
docker compose up

백그라운드 실행

docker compose up -d

10. 종료
docker compose down

11. 환경 변수

.env

DB_HOST=mysql

DB_USER=root

DB_PASSWORD=1234

DB_NAME=node_db

PORT=3000

Node.js

require("dotenv").config();

12. MySQL 연결
const mysql = require("mysql2");

const db = mysql.createConnection({

host:process.env.DB_HOST,

user:process.env.DB_USER,

password:process.env.DB_PASSWORD,

database:process.env.DB_NAME

});

Docker에서는 DB_HOST=mysql처럼 서비스 이름을 사용합니다.

13. 데이터 유지

볼륨(Volume)을 사용합니다.

volumes:

mysql-data:

MySQL

volumes:

- mysql-data:/var/lib/mysql

데이터가 컨테이너 삭제 후에도 유지됩니다.

14. React + Node + MySQL
Docker



├── React

├── Node

└── MySQL

각 서비스를 하나의 Compose 파일에서 관리할 수 있습니다.

15. 로그 확인
docker logs 컨테이너명

실시간 로그

docker logs -f 컨테이너명

16. 실행 중인 컨테이너
docker ps

전체 확인

docker ps -a

17. 컨테이너 접속
docker exec -it 컨테이너명 bash

Node 내부에서

node -v

확인 가능합니다.

18. 이미지 삭제
docker rmi 이미지명

컨테이너 삭제

docker rm 컨테이너명

19. 실무 프로젝트 구조
project



├── frontend

│ Dockerfile



├── backend

│ Dockerfile



├── nginx

│ Dockerfile



└── docker-compose.yml

React, Node.js, MySQL, Nginx를 각각 독립된 컨테이너로 구성하는 것이 일반적입니다.

20. 이번 강의 핵심 정리
명령어 설명
docker build 이미지 생성
docker run 컨테이너 실행
docker ps 실행 중인 컨테이너 확인
docker logs 로그 확인
docker exec 컨테이너 접속
docker compose up 여러 서비스 실행
docker compose down 서비스 종료
실무 팁

Docker를 사용할 때는 애플리케이션과 데이터베이스를 분리하는 것이 중요합니다.

권장 구조

React Container


Node.js Container


MySQL Container

또한 MySQL은 반드시 Volume을 사용해 데이터를 영구 보관하고, .env 파일을 통해 환경 변수를 관리하는 것이 일반적입니다.

실습 미션

다음 환경을 Docker로 구성해 보세요.

✅ Node.js 컨테이너
✅ MySQL 컨테이너
✅ Dockerfile 작성
✅ Docker Compose 작성
✅ .env 적용
✅ MySQL Volume 설정
✅ Express 서버 실행 확인
#28강. Docker를 이용한 Node.js 프로젝트 컨테이너화

첨부 파일

0개
첨부된 파일이 없습니다.

댓글 / 답글

0개
댓글을 작성하려면 로그인하세요.
아직 댓글이 없습니다.