Express.js를 사용하여 Docker 컨테이너에서 웹 개발

Patricia Arquette
풀어 주다: 2024-11-07 15:55:03
원래의
142명이 탐색했습니다.

Web Development in Docker Containers Using Express.js

오늘날의 빠르게 변화하는 개발 환경에서 컨테이너화는 웹 개발자를 위한 판도를 바꾸는 접근 방식으로 등장하여 일관되고 이식 가능하며 관리하기 쉬운 환경을 제공합니다. 가장 널리 사용되는 컨테이너화 플랫폼인 Docker를 사용하면 개발자가 컨테이너를 쉽게 생성하고 관리할 수 있어 개발과 배포가 더욱 원활해집니다. Express.js와 같은 Node.js 프레임워크와 Docker를 결합하면 웹 개발의 민첩성이 향상되어 개발자가 웹 애플리케이션을 쉽게 생성, 테스트 및 배포할 수 있습니다.

이 기사에서는 웹 개발에 가져오는 이점에 초점을 맞춰 Docker 컨테이너 내에서 Express.js 애플리케이션을 설정하고 개발하는 방법을 살펴보겠습니다.

웹 개발에 Docker를 사용하는 이유는 무엇입니까?

Docker는 애플리케이션의 종속성을 컨테이너 내에 캡슐화합니다. 이는 다음을 의미합니다.

  • 환경 간 일관성: Docker 컨테이너는 Docker가 설치된 모든 시스템에서 동일한 방식으로 실행되므로 "내 컴퓨터에서 작동"하는 문제가 제거됩니다.
  • 격리: Docker는 애플리케이션에 격리된 환경을 제공하여 다른 애플리케이션을 방해하지 않도록 합니다.
  • 확장성 및 배포: 컨테이너를 사용하면 쉽게 확장하고 배포할 수 있으므로 애플리케이션을 수평적으로 쉽게 확장할 수 있습니다.

Express.js를 사용한 웹 개발의 경우 Docker는 Node.js 및 기타 종속성(예: 데이터베이스 또는 라이브러리)이 호스트 시스템과 별도의 환경 내에서 올바르게 구성되었는지 확인합니다.

Docker에서 Express.js 애플리케이션 설정

Docker 컨테이너 내에서 Express.js 애플리케이션을 설정하고 실행하는 데 필요한 단계를 살펴보겠습니다.

1단계: Express.js 애플리케이션 초기화

먼저 기본 Express.js 애플리케이션을 만듭니다. 전역적으로 설치하지 않은 경우 다음을 실행할 수 있습니다.

npx express-generator myapp
cd myapp
로그인 후 복사
로그인 후 복사

이렇게 하면 Express.js 앱에 대한 기본 폴더 구조와 몇 가지 기본 파일이 생성됩니다. 다음으로 필요한 종속성을 설치합니다.

npm install
로그인 후 복사
로그인 후 복사

2단계: Dockerfile 작성

Dockerfile은 애플리케이션을 설정하고 실행하는 데 필요한 환경과 지침을 정의합니다. Express.js 애플리케이션용 Dockerfile의 예는 다음과 같습니다.

# Use an official Node.js image as the base
FROM node:latest AS development

# Create and set the working directory inside the container
WORKDIR /app

# Copy package.json and package-lock.json files to the container
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the entire application code to the container
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Run the application
CMD ["npm", "start"]
로그인 후 복사
로그인 후 복사

3단계: Docker Compose 파일 생성(선택 사항)

애플리케이션에 여러 서비스(예: 데이터베이스)가 있는 경우 docker-compose.yml을 사용하여 해당 서비스를 정의하고 관리할 수 있습니다. 다음은 샘플 docker-compose.yml 파일입니다.

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development
로그인 후 복사
로그인 후 복사

4단계: Docker 컨테이너 빌드 및 실행

애플리케이션용 컨테이너를 생성하려면 애플리케이션의 루트 디렉터리(Dockerfile이 있는 위치)에서 터미널을 열고 다음을 실행하세요.

npx express-generator myapp
cd myapp
로그인 후 복사
로그인 후 복사

그런 다음 컨테이너를 실행하려면 다음을 사용하세요.

npm install
로그인 후 복사
로그인 후 복사

이제 http://localhost:3000에서 애플리케이션에 액세스할 수 있습니다.

5단계: 라이브 리로딩을 사용한 개발

기본적으로 Docker는 라이브 다시 로드(코드 변경 사항이 자동으로 반영됨)를 지원하지 않습니다. 하지만 파일 변경 사항을 감시하고 서버를 자동으로 다시 시작하는 도구인 nodemon의 도움으로 이를 달성할 수 있습니다.

먼저 nodemon을 개발 종속성으로 설치합니다.

# Use an official Node.js image as the base
FROM node:latest AS development

# Create and set the working directory inside the container
WORKDIR /app

# Copy package.json and package-lock.json files to the container
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the entire application code to the container
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Run the application
CMD ["npm", "start"]
로그인 후 복사
로그인 후 복사

그런 다음 Dockerfile을 업데이트하여 NODE_ENV를 개발로 설정하고 시작 명령을 업데이트합니다.

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development
로그인 후 복사
로그인 후 복사

또는 docker-compose.yml을 사용하는 경우 여기에 명령을 직접 지정할 수 있습니다.

docker build -t express-app .
로그인 후 복사

이 설정을 사용하면 실시간 다시 로드가 가능해 시간을 절약하고 생산성을 향상시켜 개발 중에 매우 유용합니다.

6단계: Docker 볼륨으로 종속성 관리

매번 종속성이 다시 빌드되는 문제를 방지하려면 Docker 볼륨을 사용하여 로컬 파일 시스템의 소스 코드를 컨테이너에 마운트하세요.

docker-compose.yml에서:

docker run -p 3000:3000 express-app
로그인 후 복사

이 구성은 호스트와 컨테이너 간에 코드를 동기화하지만 node_modules 폴더를 재정의하지는 않습니다.

7단계: Docker 내부 디버깅

Docker는 디버깅을 위한 다양한 옵션을 제공합니다. 애플리케이션에 DEBUG 플래그를 추가하여 로깅의 자세한 정도를 높이거나 Docker의 자체 로깅 및 모니터링 명령을 사용할 수 있습니다.

npm install --save-dev nodemon
로그인 후 복사

8단계: 프로덕션을 위한 Dockerizing

프로덕션으로 전환할 때 다음과 같은 최적화를 위한 추가 단계가 있습니다.

  • 다단계 빌드를 사용하여 이미지 크기를 줄입니다.
  • 환경별 구성 설정
  • 취약점 검색과 같은 보안 조치를 추가합니다. 다단계 빌드 Dockerfile의 예:
# Install nodemon globally
RUN npm install -g nodemon

# Run the application using nodemon
CMD ["nodemon", "bin/www"]
로그인 후 복사

Docker에서 Express.js를 사용하여 개발할 때의 장점
Docker에서 Express.js 애플리케이션을 개발하면 다음과 같은 중요한 이점이 있습니다.

  • 플랫폼 일관성: Docker 컨테이너는 개발부터 생산까지 모든 단계에서 환경을 표준화합니다.
  • 단순화된 종속성: 종속성을 캡슐화하면 로컬 시스템에 복잡한 설치가 필요하지 않습니다. 신속한 확장: 컨테이너를 사용하면 추가 인스턴스를 배포하여 애플리케이션을 수평으로 확장할 수 있습니다. 간편한 공동 작업: Dockerfile 또는 docker-compose.yml을 공유하면 팀원이 정확한 환경에서 작업할 수 있습니다. ## 모범 사례
  • Docker 이미지를 작게 유지: 다단계 빌드를 사용하여 이미지 크기를 최소화하고 성능을 향상시킵니다. 구성에 환경 변수 사용: 컨테이너 환경에 구애받지 않도록 구성을 하드 코딩하지 마세요.
  • 볼륨 활용: 개발 중인 데이터 저장 또는 코드 동기화를 위해 Docker 볼륨을 활용하세요.
  • CI/CD로 자동화: Docker를 CI/CD 파이프라인에 통합하여 여러 환경에 일관되고 자동화된 배포를 구현하세요. ## 결론 Express.js 애플리케이션을 Dockerizing하면 웹 개발을 위한 확장 가능하고 강력한 솔루션이 제공됩니다. Docker를 사용하면 환경에 대한 더 나은 제어권을 얻고, 종속성 관리를 단순화하고, 협업을 개선할 수 있습니다. 이 모든 것은 현대 웹 개발에 매우 ​​중요합니다. 간단한 애플리케이션에서 작업하든, 여러 서비스가 포함된 복잡한 시스템에서 작업하든, Docker는 작업 흐름을 간소화하고 성공적인 프로덕션을 위해 프로젝트를 설정할 수 있는 도구를 제공합니다.

지금 Docker와 Express.js를 시작하여 개발 경험을 어떻게 변화시킬 수 있는지 알아보세요!

위 내용은 Express.js를 사용하여 Docker 컨테이너에서 웹 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!