Docker - Node.js 설정: 초보자 가이드
안녕하세요, 도전하는 개발자 여러분! 오늘 우리는 Docker와 Node.js의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 저는 이 모험을 단계별로 안내해드리겠습니다. 프로그래밍에 처음이라면 걱정하지 마세요 - 우리는 기본부터 시작하고 단계를 밟아갈 것입니다. 그러니 커피(또는 차, 당신의 취향에 따라)를 한 잔 마시고, 이제 시작해봅시다!
Docker는 무엇인가요?
구체적인 내용에 들어가기 전에 Docker에 대해 이야기해보겠습니다. 새로운 집으로 이사할 때, 다양한 모양과 크기의 상자에 모든 것을 싸는 대신, 모든 것이 어디서나 트럭이나 배에 딱 맞는 표준화된 컨테이너에 담을 수 있다면 어떨까요? Docker는 소프트웨어에 대해 이와 같은 일을 합니다!
Docker는 애플리케이션과 모든 종속성을 표준화된 단위인 컨테이너로 포장할 수 있게 해주는 플랫폼입니다. 이 컨테이너는 어떤 시스템에서도 일관성 있게 실행되므로, 개발, 배송 및 애플리케이션 실행이 더 쉬워집니다.
Node.js와 Docker를 사용하는 이유는 무엇인가요?
이제 여러분은 "Node.js 애플리케이션에 Docker를 사용해야 하나요?"라는 의문이 들 수 있습니다. 그럼 작은 이야기를 들려드리겠습니다.
한때, Sarah라는 개발자가 있었습니다. 그녀는 랩톱에서 훌륭한 Node.js 애플리케이션을 개발했습니다. 그녀의 애플리케이션은 완벽하게 작동했습니다! 하지만 팀의 서버에서 실행하려고 할 때, 서버가 다운되었습니다. 문제는 무엇이었을까요? Node.js의 다른 버전과 일부 누락된 종속성 때문이었습니다. Sarah는 이 문제를 해결하려고 몇 일 동안 고생했습니다.
Sarah가 Docker를 사용했다면, 이러한 골칫거리를 피할 수 있었을 것입니다. Docker는 애플리케이션이 어디서든 - 랩톱, 동료의 데스크톱, 클라우드의 서버에서도 동일한 환경에서 실행되도록 보장합니다.
Docker를 Node.js에 설정하는 방법
좋아요, 우리는 이제 실제 설정에 손을 대보겠습니다!
단계 1: Docker 설치
먼저, 우리는 Docker를 우리의 기계에 설치해야 합니다. Docker 웹사이트로 이동하여 운영 체제에 맞는 Docker Desktop을 다운로드합니다. 설치 지침을 따라 설치를 완료하면 준비가 끝납니다!
단계 2: Node.js 애플리케이션 생성
간단한 Node.js 애플리케이션을 컨테이너화하기 위해 새로운 디렉토리를 만들고 해당 디렉토리로 이동합니다:
mkdir my-node-app
cd my-node-app
이제 간단한 package.json
파일을 생성합니다:
npm init -y
이 명령은 기본 값으로 package.json
파일을 생성합니다. 그런 다음, Express라는 인기 있는 Node.js 프레임워크를 설치합니다:
npm install express
이제 app.js
라는 파일을 생성하고 다음 코드를 추가합니다:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, Docker!');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
이 간단한 애플리케이션은 루트 URL을 방문할 때 "Hello, Docker!"를 응답하는 웹 서버를 생성합니다.
단계 3: Dockerfile 생성
이제 흥미로운 부분 - Dockerfile을 생성하는 것입니다! Dockerfile은 Docker가 우리의 컨테이너를 빌드하는 방법을 알려주는 레시피와 같습니다. 프로젝트 디렉토리에 Dockerfile
(확장자 없음) 파일을 생성하고 다음 내용을 추가합니다:
# 공식 Node 런타임을 부모 이미지로 사용
FROM node:14
# 컨테이너 내 작업 디렉토리 설정
WORKDIR /usr/src/app
# package.json과 package-lock.json을 복사
COPY package*.json ./
# 종속성 설치
RUN npm install
# 나머지 애플리케이션 코드 복사
COPY . .
# 포트 3000을 컨테이너 외부에서 접근할 수 있게 설정
EXPOSE 3000
# 애플리케이션 실행 명령 정의
CMD [ "node", "app.js" ]
이를 설명하자면:
-
FROM node:14
: 이는 우리가 사용할 기본 이미지를 지정합니다 - 이 경우 Node.js 버전 14입니다. -
WORKDIR /usr/src/app
: 이는 컨테이너 내 작업 디렉토리를 설정합니다. -
COPY package*.json ./
: 이는 우리의 package.json 파일을 컨테이너에 복사합니다. -
RUN npm install
: 이는 종속성을 컨테이너 내에 설치합니다. -
COPY . .
: 이는 나머지 애플리케이션 코드를 컨테이너에 복사합니다. -
EXPOSE 3000
: 이는 포트 3000을 컨테이너 외부에서 접근할 수 있게 설정합니다. -
CMD [ "node", "app.js" ]
: 이는 우리의 애플리케이션을 실행하는 명령을 정의합니다.
단계 4: Docker 컨테이너 빌드 및 실행
이제 Dockerfile이 준비되었으므로, Docker 이미지를 빌드합니다:
docker build -t my-node-app .
이 명령은 Docker 이미지를 빌드하고 my-node-app
태그를 지정합니다. 끝의 .
은 Dockerfile이 현재 디렉토리에 있음을 나타냅니다.
빌드가 완료되면, 우리는 컨테이너를 실행할 수 있습니다:
docker run -p 3000:3000 my-node-app
이 명령은 우리의 컨테이너를 실행하고 컨테이너의 포트 3000을 호스트의 포트 3000으로 매핑합니다.
축하합니다! 이제 브라우저에서 http://localhost:3000
을 방문하여 "Hello, Docker!"를 볼 수 있어야 합니다.
일반 Docker 명령
다음은 유용한 일반 Docker 명령 목록입니다:
명령 | 설명 |
---|---|
docker build |
Docker 이미지를 Dockerfile로부터 빌드 |
docker run |
Docker 컨테이너를 실행 |
docker ps |
실행 중인 컨테이너 목록 |
docker stop |
실행 중인 컨테이너 중지 |
docker rm |
컨테이너 제거 |
docker images |
Docker 이미지 목록 |
docker rmi |
Docker 이미지 제거 |
docker logs |
컨테이너 로그 보기 |
결론
이제 여러분은 Docker를 사용하여 Node.js 애플리케이션을 설정하는 방법을 성공적으로 배웠습니다. 우리는 Docker가 무엇인지, 왜 유용한지, 그리고 Node.js 애플리케이션을 위해 Docker 컨테이너를 생성하고 실행하는 방법을 배웠습니다.
기억하시길, 새로운 기술을 배우는 것은 연습이 필요합니다. 첫 번째 시도에서 완벽하게 작동하지 않는다고 실망하지 마세요. 계속 실험하고, 언제쯤 프로로 변신할 것입니다!
마무리하면서, 저는 당신에게 작은 비밀을 공개하고 싶습니다. Docker를 처음 시작할 때, 제가 실수로 docker run
대신 docker build
를 입력하고, 변화가 왜 나타나지 않는지에 대해 한 시간 동안 고민했습니다. 우리 모두 실수를 저지르는 것이 중요한 것입니다 - 그게 우리가 배우는 방법입니다!
계속 코딩하고, 배우고, 가장 중요한 것은 즐기세요! 다음에 만나기까지, 행복하게 Docker화하세요!
Credits: Image by storyset