Docker 화 Node. js 웹 응용 프로그램
6621 단어 nodejs
이 예제 의 목적 은 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 (장기 지원) 버 전
Dockerfile
의 Dockerfile
을 사용 할 것 이다. 사용 가능 한 도크 허브 에서: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.js
재 Dockerfile
다음 내용 과 같은 디 렉 터 리 에 파일 만 들 기: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 에 대한 더 많은 정 보 를 찾 을 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Node.js를 AWS서버에서 사용하는 실습간단한 예제와 함께 AWS에서 Node.js를사용하는 법을 배워보도록 하겠다. 해당 github에 있는 레포지토리로 사용을 할 것이다. 3000번 포트로 Listen되는 예제이고 간단히 GET, POST, DELET...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.