Docker 화 Node. js 웹 응용 프로그램

6621 단어 nodejs
docker 홈 페이지 https://docs.docker.com/get-started/part3/
이 예제 의 목적 은 Node. js 프로그램 을 Docker 용기 에 넣 는 방법 을 보 여 주 는 것 입 니 다.이 지침 은 생산 배치 보 다 는 개발 에 쓰 이 는 데 목적 을 두 고 있다.이 안내 서 는 Docker 가 설치 되 어 있 고 Node. js 응용 프로그램의 구조 에 대해 기본 적 인 이 해 를 가지 고 있다 고 가정 합 니 다.
이 안내서 의 첫 번 째 부분 에서, 우 리 는 Node. js 에서 간단 한 웹 프로그램 을 만 들 것 입 니 다. 그리고, 우 리 는 이 프로그램 을 위해 Docker 미 러 를 구축 할 것 입 니 다. 마지막 으로 이 그림 에서 용 기 를 실례 화 할 것 입 니 다.
Docker 는 응용 프로그램 과 환경 및 모든 의존 항목 을 용기 라 는 '상자' 에 포장 할 수 있 습 니 다.일반적으로 용 기 는 리 눅 스 운영 체제 의 박리 에서 기본 버 전 으로 실행 되 는 응용 프로그램 으로 구성 된다.그림 은 용기 의 청사진 이 고 용 기 는 그림 의 실행 인 스 턴 스 입 니 다.
Node. js 프로그램 만 들 기
우선 모든 파일 이 존재 하 는 새 디 렉 터 리 를 만 듭 니 다.이 디 렉 터 리 에서 응용 프로그램 과 의존 항목 을 설명 하 는 파일 을 만 듭 니 다.
{
  "name": "docker_web_app",
  "version": "1.0.0",
  "description": "Node.js on Docker",
  "author": "First Last ",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.16.1"
  }
}

package.json 파일 을 사용 하여 실행 package.json 합 니 다.만약 사용 하신 것 이 npm install 버 전 5 또는 더 높 은 버 전 은 Docker 미 러 에 복사 할 파일 을 생 성 합 니 다.
그리고 npm Express. js 프레임 워 크 를 사용 하여 웹 프로그램 을 정의 하 는 파일 을 만 듭 니 다. :
'use strict';

const express = require('express');

// Constants
const PORT = 8080;
const HOST = '0.0.0.0';

// App
const app = express();
app.get('/', (req, res) => {
  res.send('Hello world
'); }); app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`);

다음 단계 에서 공식 Docker 미 러 를 사용 하여 Docker 용기 에서 이 프로그램 을 실행 하 는 방법 을 소개 합 니 다.우선, 프로그램의 Docker 미 러 를 구축 해 야 합 니 다.
Dockerfile 만 들 기
빈 파일 이름 만 들 기 package-lock.json:
touch Dockerfile
server.js 좋아 하 는 텍스트 편집기 에서 열기
우리 가 해 야 할 첫 번 째 일 은 우리 가 구축 하고 자 하 는 이미 지 를 정의 하 는 것 이다.여기 서 우 리 는 최신 LTS (장기 지원) 버 전 DockerfileDockerfile 을 사용 할 것 이다. 사용 가능 한 도크 허브 에서:
FROM node:8

다음 에 그림 에 있 는 프로그램 코드 를 저장 할 디 렉 터 리 를 만 듭 니 다. 이것 은 프로그램의 작업 디 렉 터 리 입 니 다.
# Create app directory
WORKDIR /usr/src/app

이 그림 은 Node. js 와 NPM 이 설치 되 어 있 기 때문에 다음 작업 은 8 바 이 너 리 파일 로 프로그램 의존 항목 을 설치 하 는 것 입 니 다.node 버 전 4 또는 더 빠 른 버 전 을 사용한다 면 npm 파일 이 생 성 되 지 않 습 니 다.
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

전체 작업 디 렉 터 리 를 복사 하 는 것 이 아니 라 npm 파일 만 복사 합 니 다.캐 시 된 Docker 층 을 사용 할 수 있 습 니 다.bitJudo 여기 서 좋 은 설명 이 있어 요. 。그 밖 에 package-lock.json 주석 에서 지정 한 명령 은 생산 환경 에 더욱 빠 르 고 신뢰 할 수 있 으 며 재현 가능 한 구축 을 제공 하 는 데 도움 이 된다.너 는 여기에서 더 많은 관련 정 보 를 읽 을 수 있다.
응용 프로그램의 소스 코드 를 Docker 미 러 에 묶 으 려 면 아래 package.json 를 사용 하 십시오. 명령:
# Bundle app source
COPY . .

응용 프로그램 이 포트 에 연결 되 어 있 습 니 다. npm ci 따라서 이 COPY 명령 을 사용 하여 8080 데 몬 을 매 핑 합 니 다.
EXPOSE 8080

마지막 으로 중요 하지 않 은 것 은 프로그램 을 실행 하 는 명령 을 정의 하고 EXPOSE 이 명령 을 사용 하여 실행 할 때 를 정의 하 는 것 입 니 다.서버 의 기본 내용 을 시작 하기 위해 docker 실행 CMD 을 사용 합 니 다. :
CMD [ "npm", "start" ]

npm start 지금 쯤 그 럴 거 야.
FROM node:8

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "npm", "start" ]

. dockerignore 파일node server.jsDockerfile 다음 내용 과 같은 디 렉 터 리 에 파일 만 들 기:
node_modules
npm-debug.log

이 는 로 컬 모듈 과 디 버 깅 로 그 를 Docker 이미지 에 복사 하 는 것 을 막 고 이미지 에 설 치 된 모듈 을 덮어 쓸 수 있 습 니 다.
너의 이미 지 를 만들어 라.
디 렉 터 리 .dockerignore 를 가 진 디 렉 터 리 로 이동 하고 다음 명령 을 실행 하여 Docker 미 러 를 구축 합 니 다.이 Dockerfile 로 고 는 그림 을 표시 할 수 있 습 니 다. 나중에 이 Dockerfile 명령 을 사용 하면 쉽게 찾 을 수 있 습 니 다.
$ docker build -t /node-web-app .

그림 을 Docker 에서 보 여 줍 니 다:
$ docker images

# Example
REPOSITORY                      TAG        ID              CREATED
node                            8          1934b0b038d1    5 days ago
/node-web-app    latest     d64d3505b0d2    1 minute ago

그림 실행
이미 지 를 실행 할 때 -t 분리 모드 로 용 기 를 실행 하여 용 기 를 배경 에서 실행 합 니 다.이 docker images 표 지 는 공공 포트 를 용기 안의 개인 포트 로 재 설정 합 니 다.이전에 구축 한 그림 실행 하기:
$ docker run -p 49160:8080 -d /node-web-app

출력
# Get container ID
$ docker ps

# Print app output
$ docker logs 

# Example
Running on http://localhost:8080

용기 내부 로 들 어 갈 필요 가 있다 면 다음 명령 을 사용 할 수 있 습 니 다 -d.
# Enter the container
$ docker exec -it  /bin/bash

테스트
응용 프로그램 을 테스트 하려 면 Docker 맵 의 응용 포트 를 가 져 오 십시오:
$ docker ps

# Example
ID            IMAGE                                COMMAND    ...   PORTS
ecce33b30ebf  /node-web-app:latest  npm start  ...   49160->8080

위의 예제 에서 Docker  -p 용기 안의 포트 를 컴퓨터 의 포트 exec 에 투사 한다.
현재 8080 (아래 방식 으로 설치:) 를 사용 하여 프로그램 49160 을 호출 할 수 있 습 니 다.
$ curl -i localhost:49160

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 12
ETag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0"
Date: Mon, 13 Nov 2017 20:53:59 GMT
Connection: keep-alive

Hello world

우 리 는 이 튜 토리 얼 이 Docker 에서 간단 한 Node. js 프로그램 을 시작 하고 실행 하 는 데 도움 이 되 기 를 바 랍 니 다.
다음 위치 에서 Docker 와 Dock. js 에 대한 더 많은 정 보 를 찾 을 수 있 습 니 다.
  • 공식 Node. js Docker 미 러
  • Node. js Docker 최 적 실천 지침
  • 공식 Docker 문서
  • 스 택 에 넘 치 는 Docker 태그
  • Docker Subreddit
  • 좋은 웹페이지 즐겨찾기