오늘날의 빠르게 변화하는 개발 환경에서 컨테이너화는 웹 개발자를 위한 판도를 바꾸는 접근 방식으로 등장하여 일관되고 이식 가능하며 관리하기 쉬운 환경을 제공합니다. 가장 널리 사용되는 컨테이너화 플랫폼인 Docker를 사용하면 개발자가 컨테이너를 쉽게 생성하고 관리할 수 있어 개발과 배포가 더욱 원활해집니다. Express.js와 같은 Node.js 프레임워크와 Docker를 결합하면 웹 개발의 민첩성이 향상되어 개발자가 웹 애플리케이션을 쉽게 생성, 테스트 및 배포할 수 있습니다.
이 기사에서는 웹 개발에 가져오는 이점에 초점을 맞춰 Docker 컨테이너 내에서 Express.js 애플리케이션을 설정하고 개발하는 방법을 살펴보겠습니다.
Docker는 애플리케이션의 종속성을 컨테이너 내에 캡슐화합니다. 이는 다음을 의미합니다.
Express.js를 사용한 웹 개발의 경우 Docker는 Node.js 및 기타 종속성(예: 데이터베이스 또는 라이브러리)이 호스트 시스템과 별도의 환경 내에서 올바르게 구성되었는지 확인합니다.
Docker 컨테이너 내에서 Express.js 애플리케이션을 설정하고 실행하는 데 필요한 단계를 살펴보겠습니다.
먼저 기본 Express.js 애플리케이션을 만듭니다. 전역적으로 설치하지 않은 경우 다음을 실행할 수 있습니다.
npx express-generator myapp cd myapp
이렇게 하면 Express.js 앱에 대한 기본 폴더 구조와 몇 가지 기본 파일이 생성됩니다. 다음으로 필요한 종속성을 설치합니다.
npm install
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"]
애플리케이션에 여러 서비스(예: 데이터베이스)가 있는 경우 docker-compose.yml을 사용하여 해당 서비스를 정의하고 관리할 수 있습니다. 다음은 샘플 docker-compose.yml 파일입니다.
services: app: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development
애플리케이션용 컨테이너를 생성하려면 애플리케이션의 루트 디렉터리(Dockerfile이 있는 위치)에서 터미널을 열고 다음을 실행하세요.
npx express-generator myapp cd myapp
그런 다음 컨테이너를 실행하려면 다음을 사용하세요.
npm install
이제 http://localhost:3000에서 애플리케이션에 액세스할 수 있습니다.
기본적으로 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 .
이 설정을 사용하면 실시간 다시 로드가 가능해 시간을 절약하고 생산성을 향상시켜 개발 중에 매우 유용합니다.
매번 종속성이 다시 빌드되는 문제를 방지하려면 Docker 볼륨을 사용하여 로컬 파일 시스템의 소스 코드를 컨테이너에 마운트하세요.
docker-compose.yml에서:
docker run -p 3000:3000 express-app
이 구성은 호스트와 컨테이너 간에 코드를 동기화하지만 node_modules 폴더를 재정의하지는 않습니다.
Docker는 디버깅을 위한 다양한 옵션을 제공합니다. 애플리케이션에 DEBUG 플래그를 추가하여 로깅의 자세한 정도를 높이거나 Docker의 자체 로깅 및 모니터링 명령을 사용할 수 있습니다.
npm install --save-dev nodemon
프로덕션으로 전환할 때 다음과 같은 최적화를 위한 추가 단계가 있습니다.
# Install nodemon globally RUN npm install -g nodemon # Run the application using nodemon CMD ["nodemon", "bin/www"]
Docker에서 Express.js를 사용하여 개발할 때의 장점
Docker에서 Express.js 애플리케이션을 개발하면 다음과 같은 중요한 이점이 있습니다.
지금 Docker와 Express.js를 시작하여 개발 경험을 어떻게 변화시킬 수 있는지 알아보세요!
위 내용은 Express.js를 사용하여 Docker 컨테이너에서 웹 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!