docker部署nodejs應用

2021-08-21 13:26:05 字數 3331 閱讀 5575

docker三個核心概念如下:

* 映象(images):乙個唯讀的模板,可以理解為應用程式的執行環境,包含了程式執行所依賴的環境和基本配置。相當於上圖中的每個小箱子裡面裝的東西。

* 倉庫(repository):乙個用於存放映象檔案的倉庫。可以看做和gitlab一樣。

* 容器(container):乙個執行應用程式的虛擬容器,他和映象最大的區別在於容器的最上面那一層是可讀可寫的。 相當於上圖中的每個小箱子裡。

* docker官網

首先建立乙個空資料夾。並建立以下檔案:

server.js

package.json

dockerfile

.dockerignore

命令如下:

mkdir docker_demo

cd docker_demo

touch server.js

touch package.json

touch dockerfile

touch .dockerignore

const koa = require('koa');

ctx.body = 'hello docker';

});

,

"dependencies":

}

npm start

建立dockerfile檔案

dockerfile是由一系列命令和引數構成的指令碼,乙個dockerfile裡面包含了構建整個image的完整命令。docker通過docker build執行dockerfile中的一系列命令自動構建image。在.dockerignore檔案裡面寫入**。表示過濾該型別的檔案。類似git的.gitignore。

# logs

logs

*.log

npm-debug.log*

# runtime data

pids

*.pid

*.seed

# directory for instrumented libs generated by jscoverage/jscover

lib-cov

# coverage directory used by tools like istanbul

coverage

# nyc test coverage

.nyc_output

# grunt intermediate storage (

.grunt

# node-waf configuration

.lock-wscript

# compiled binary addons (

build/release

# dependency directories

node_modules

jspm_packages

# optional npm cache directory

.npm

# optional repl history

.node_repl_history

.idea

.node_modules

node_modules

.vscode

在dockerfile檔案中寫入以下**:
#制定node映象的版本

from node:8.9-alpine

#宣告作者

maintainer robin

#安裝依賴

run npm install

#對外暴露的埠

expose 3000

#程式啟動指令碼

cmd ["npm", "start"]

構建映象

使用build命令構造映象,注意後面那個.不能少。

docker build -t docker_demo .
robin:docker_demo robin$ docker build -t docker_demo .

sending build context to docker daemon 39.94kb

step 1/7 : from node:8.9-alpine

---> 406f227b21f5

step 2/7 : maintainer robin

---> using cache

---> 78d6cdbcfee2

---> 2cb30678612d

removing intermediate container e51377081039

---> c2b7d0f37d2d

step 5/7 : run npm install

---> running

in da0c3946ca8d

npm notice created a lockfile as package-lock.json. you should commit this file.

added 38 packages in 3.323s

removing intermediate container da0c3946ca8d

---> eecee87f10e2

step 6/7 : expose 3000

---> running

in f3973cc168a4

removing intermediate container f3973cc168a4

---> 2671a4c6deb4

step 7/7 : cmd ["npm", "start"]

---> running

in dec529f754aa

removing intermediate container dec529f754aa

---> 6ec73793d353

successfully built 6ec73793d353

successfully tagged docker_demo:latest

docker images
#啟動映象 -d表示後台執行,-p 9000:3000表示指定本地的9000埠隱射到容器內的3000埠,docker_demo為映象名稱

docker run -d -p 9000:3000 docker_demo

#檢視容器

docker ps

附:docker常用命令

基於Docker部署nodejs應用

docker hub中有官方node映象,按照自己的需求直接獲取對應版本的image即可。我獲取的是8.0 alpine版本,因為基於alpine的node映象足夠小,僅有63.7 mb。從原始碼庫上,獲取到整個源 工程。過程略 首先,我們確立文件模型。目錄結構如下 nodejs order nod...

docker部署nodejs專案應用

之前筆者弄了一套nestjs專案放在自己伺服器上,並用pm2管理程序。現在要把pm2停止,嘗試一下用docker容器,那麼首先要安裝docker 由於筆者伺服器的系統是centos7,所以這裡寫的是在centos7上安裝docker 我們可以用以下命令來檢視centos版本 uname r官方源位址...

docker容器化部署nodejs應用

使用 dockerfile 建立映象 bossnodejs test v1.0.1 映象名稱 v版本號 空格 點 dockerfile 檔案所在目錄,可以指定dockerfile 的絕對路徑 docker build t bossnodejs test v1.0.1 標記本地映象,將其歸入某一倉庫 ...