Node.js 20을 사용할 수 있지만 다른 버전을 사용할 수 있습니다. .
종속성 차이 : - 데이터베이스 및 기타 종속성은 다른 플랫폼마다 다르거 나 사용할 수 없을 수 있습니다.
보안 문제 : 다양한 운영 체제에 코드를 배포 할 때 예상치 못한 보안 위험이 발생할 수 있습니다.
- 주요 혜택
Cross-Platform 호환성 : Docker는 Node.js 응용 프로그램을 격리 된 컨테이너 환경에서 실행할 수 있도록하여 "내 컴퓨터에서 작동"문제를 해결합니다.
Docker에서 simplified node.js 앱 배포 : - 기본 Node.js 스크립트를 작성하여 Docker 컨테이너 내에서 실행하도록 안내합니다.
Enhanced Node.js Development Workflow : 우리는 Docker가 Node.js 응용 프로그램의 개발 프로세스를 간소화하는 방법을 보여줍니다.
Docker 's Solution
Docker는 앞서 언급 한 호환성 문제를 효과적으로 해결합니다. 응용 프로그램을 직접 설치하는 대신 컨테이너라고 불리는 경량의 고립 된 가상 기계와 같은 환경에서 응용 프로그램을 실행합니다.
-
전체 PC 하드웨어 및 운영 체제를 모방하는 가상 머신과 달리 Docker는 OS를 모방하여 응용 프로그램을 직접 설치할 수 있습니다. Linux 기반 컨테이너 당 하나의 응용 프로그램을 실행하고 HTTP 통신을위한 가상 네트워크를 통해 연결하는 것이 일반적입니다.
장점은 많다 :
일관된 환경 : Docker 설정은 생산 Linux 서버를 반영하여 배포를 단순화합니다.
단순화 된 종속성 관리 :
의존성을 몇 분 안에 다운로드, 설치 및 구성합니다.
크로스 플랫폼 일관성 :
컨테이너화 된 앱은 모든 플랫폼에서 동일하게 작동합니다.
강화 된 보안 : 컨테이너 내에서 앱 오작동이 발생하면 호스트 컴퓨터에 영향을 미치지 않습니다. 컨테이너를 쉽게 다시 시작할 수 있습니다.
Docker를 사용하면 Node.js를 로컬로 설치하거나 NVM과 같은 런타임 관리자를 사용하지 않습니다. 첫 번째 node.js 스크립트
Docker Desktop (Windows, MacOS 또는 Linux)을 설치하십시오. : 라는 간단한 스크립트를 만듭니다
<.> node.js가 로컬로 설치되면 버전을 볼 수 있도록 실행하십시오. 이제 Docker 컨테이너 내에서 실행하십시오 (최신 LTS Node.js 버전 사용) : .
(MacOS/Linux)
version.js
(Windows PowerShell) <code class="language-javascript">console.log(`Node.js version: ${process.version}`);</code>
Docker가 종속성을 다운로드함에 따라 첫 번째 실행은 잠시 시간이 걸릴 수 있습니다. 후속 실행은 훨씬 빠릅니다. node.js 버전 (예 : )을 쉽게 전환 할 수 있습니다. 스크립트는 특정 node.js 버전이있는 Linux 컨테이너 내에서 실행됩니다.
명령 분석 :
: 이미지에서 컨테이너를 시작합니다
: 종료시 컨테이너를 제거합니다
: 컨테이너에 이름을 할당합니다
: 현재 디렉토리를 컨테이너 내부의 볼륨으로 마운트합니다.
<code class="language-bash">$ docker run --rm --name version -v $PWD:/home/node/app -w /home/node/app node:lts-alpine version.js</code>
: 컨테이너 내에 작업 디렉토리를 설정합니다
: Docker Image (알파인 리눅스에서 lts node.js)를 지정합니다.
: 실행하라는 명령
Docker Hub에서 Docker Images를 사용할 수 있으며 , 또는 와 같은 식별자로 표시된 다양한 버전을 제공합니다. Alpine Linux는 간단한 프로젝트에 이상적인 경량 분포입니다.
더 복잡한 응용 프로그램을 실행하는
의존성 및 빌드 단계 (NPM 사용)가있는 응용 프로그램의 경우 사용자 정의 Docker 이미지가 필요합니다. 이 예제는 express.js : 를 사용합니다
, add <code class="language-powershell">> docker run --rm --name version -v ${PWD}:/home/node/app -w /home/node/app node:lts-alpine version.js</code>
: 라는 디렉토리를 만듭니다
node:21-alpine
및 :
a
: 를 만듭니다
<:> 이미지를 빌드 : -
컨테이너를 실행하십시오 :
docker run
at 에 액세스하십시오
a 파일은 불필요한 파일이 이미지에 복사되는 것을 방지 할 수 있습니다.
Docker Compose를 사용한 - 개발 워크 플로우 --rm
이전 방법은 개발에 비효율적입니다. Docker Compose는 더 나은 솔루션을 제공합니다. : 를 작성하십시오
-
--name version
로 시작하십시오. 자동 재시작 트리거 트리거로 변경됩니다. 향상된 디버깅을 위해 Vs Code의 디버거 (포트 9229에 첨부)를 사용하십시오. <.>. - 로 중지하십시오
결론
-v $PWD:/home/node/app
Docker는 초기 설정이 필요하지만 신뢰할 수 있고 분산 가능한 코드의 장기 이점이 중요합니다. 이 튜토리얼은 기본 사항을 다룹니다. 고급 사용을위한 추가 리소스를 탐색하십시오. 이미지는 간결하게 유지됩니다.