容器將應用與環境打包整合,解決了應用外部依賴的痛點,打包後通過視窗可方便地部署到任意環境,用過就知道很香。 建立示例應用以 NestJS 為例,先建立一個示例應用。 $ npm i -g @nestjs/cli
$ nest new my-app
$ cd my-app
$ yarn && yarn start
然後 app.controller.ts 中新增如下 action: @Get('ping')
async ping() {
return 'pong';
}
測試一把會得到如下返回,證明我們的 app 一切正常: $ curl localhost:3000/ping
pong
Docker 介紹先了解 Docker 的兩個核心概念:
Docker 安裝$ brew install --cask docker
如果已經安裝過,升級可使用如下命令: $ brew install --cask docker
然後在程式目錄或 Spotlight 中找到並啟動 Docker,系統狀態列中會有個鯊魚圖示。 啟動後命令列工具已經可用,檢查安裝: $ docker —version
Docker version 20.10.6, build 370c289
使用通過 $ docker help
檢視具體命令的幫助可在 $ docker help run
打包生成映象Docker 中打包後的應用存在於映象中,其中便包含了應用及依賴的環境。將這個映象檔案進行分發就可以在其他地方載入執行,實現了在新環境中方便部署,無須再關心外部依賴。 建立 Dockerfile使用 Docker 打包應用需先建立 Dockerfile,其中包含指導 Docker 如何打包的指令。 $ touch Dockerfile
一般我們會基於已有映象來建立自己的映象,比如這裡打包 Node 應用,我們會使用一個已經包含 Node 環境的映象作為源。通過如下 FROM node:14
建立應用所在的目錄: # Create app directory
WORKDIR /usr/src/app
將檔案複製到目標路徑,然後進行 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
複製應用中的原始碼檔案: # Bundle app source
COPY . .
依賴和原始碼都好後,可以編譯 Nest 應用,生成 dist 目錄了: npm run build
可以把映象看作一個封閉環境,外界要與其中的應用進行互動,比如這裡打包的是 Nest 服務,要能正常訪問 Nest 中我們編寫的 HTTP 介面,就需要 image 向外暴露埠。 因為預設 Nest 應用起的 3000 埠,這裡就將其暴露, EXPOSE 3000
最後一條指令,指導 Docker 啟動 Nest 應用: CMD [ "node", "dist/main" ]
所以完整的 Dockerfile 目前長這樣了: FROM node:14
# 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
npm run build
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "node", "dist/main" ]
|
The text was updated successfully, but these errors were encountered: |
使用 Docker 部署 Node 應用
相關文章
- 使用 Docker 部署 Node 應用 - 映象檔案尺寸的優化Docker優化
- Docker如何高效部署Node應用?看這裡Docker
- 如何使用 docker 部署前端應用Docker前端
- 在生產環境使用Docker部署應用Docker
- Docker_Docker應用部署4Docker
- Docker部署Angular應用DockerAngular
- 教你使用Docker容器化Node.js應用程式DockerNode.js
- 使用Docker容器化部署實踐之Django應用部署(一)DockerDjango
- Docker常用的應用部署Docker
- Docker容器化部署Python應用DockerPython
- Docker 入門系列三:Docker 應用部署-MySQLDockerMySql
- Docker 入門系列三:Docker 應用部署-NginxDockerNginx
- Docker 入門系列三:Docker 應用部署-RedisDockerRedis
- 【轉】Docker部署Tomcat及Web應用DockerTomcatWeb
- Docker搭建部署Node專案Docker
- 帶你理解Kubernetes,部署一個Node應用
- Docker中部署.NET CORE應用(控制檯應用程式篇)Docker
- Docker的安裝與容器應用部署Docker
- Linux Docker 部署 ASP.NET Core應用LinuxDockerASP.NET
- 【Docker】使用docker部署 mysqlDockerMySql
- 使用Docker安裝應用Docker
- 使用dockerfile部署springboot應用DockerSpring Boot
- Jenkins + Docker + Gitee自動化部署SpringBoot應用JenkinsDockerGiteeSpring Boot
- Docker 安裝、常用命令、應用部署Docker
- Docker+Jenkins+Gitlab+Django應用部署實踐DockerJenkinsGitlabDjango
- 【譯】使用 ndb 除錯 node 應用除錯
- Docker容器與虛擬化技術:OpenEuler 部署 docker容器應用Docker
- 使用 Docker 部署 FRPDockerFRP
- JKube幫助Java應用Docker化部署到KubernetesJavaDocker
- Win10 下安裝 docker,部署 Web 應用Win10DockerWeb
- 手把手docker部署java應用(初級篇)DockerJava
- 使用 HTTP/2 加速 Node.js 應用HTTPNode.js
- 使用 NestJS 開發 Node.js 應用Node.js
- 「譯」使用 Node 構建命令列應用命令列
- ?從零開始Docker化你的Node.js應用DockerNode.js
- 部署Node應用程式選擇Heroku還是Now.sh?
- 使用Docker部署禪道Docker
- 使用 Docker 部署 Spring BootDockerSpring Boot