如何在docker容器中運行node程序

Docker 讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,即可以實現虛擬化。node

準備demo程序

index.jsweb

'use strict';

const express = require('express');

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

// App
const app = express();
app.get('/', (req, res) => {
  res.send('<h1>Hello world</h1>');
});

app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
複製代碼

根目錄新建Dockerfile文件docker

# 定義咱們須要從哪一個鏡像進行構建
FROM node:8

# 在鏡像中建立一個文件夾存放應用程序代碼,這將是你的應用程序工做目錄
WORKDIR /usr/src/app


COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 8080

CMD [ "node", "index.js" ]
複製代碼

.dockerignore文件express

node_modules
npm-debug.log
複製代碼

這將避免你的本地模塊以及調試日誌被拷貝進入到你的 Docker 鏡像中npm

構建鏡像

進入到 Dockerfile 所在的那個目錄中,運行如下命令構建 Docker 鏡像。開關符 -t 讓你標記你的鏡像json

//Don’t forget the . character at the end, which sets the build context to the current directory.

docker build -t chenkai/node-web-app:v1.0.0 .

複製代碼

檢測鏡像是否構建成功docker images | grep node-web-app 能夠看到構建的鏡像瀏覽器

運行鏡像,使用 -d 模式運行鏡像將以分離模式運行 Docker容器,使得容器在後臺自助運行。開關符-p 在容器中把一個公共端口導向到私有的端口,請用如下命令運行你以前構建的鏡像bash

docker run -p 對外暴漏端口:容器內部端口 -d chenkai/應用名稱:版本
//如
docker run -p 4444:6677 -d chenkai/node-web-app:v1.0.0
複製代碼

docker ps | grep node-web-app能夠看到啓動的容器 docker logs -f ${CONTAINER ID }能夠看到容器輸出的日誌app

瀏覽器中輸入經過容器暴露出的端口http://localhost:4444/便可訪問鏡像中的node程序ui

相關文章
相關標籤/搜索