把一个 Node.js web 应用程序给 Docker 化

创建helloworld应用程序

创建package.json 文件touch package.json,描述应用程序以及需要的依赖,内容为如下:

{
  "name": "docker_web_app",
  "version": "1.0.0",
  "description": "Node.js on Docker",
  "author": "First Last <first.last@example.com>",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.16.1"
  }
}

使用npm install这会自动生成一个 package-lock.json 文件,它将一起被拷贝进入你的 Docker 镜像中。

然后,创建一个 server.js 文件,使用 Express.js 框架定义一个 Web 应用:


touch server.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}`);

创建Dockerfile文件

#node版本好,目前官网更新到14
FROM node:12

# 镜像下的工作目录
WORKDIR /usr/src/app

# 安装应用程序依赖
COPY package*.json ./

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

# 打包资源
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

创建.dockerignore 文件

Dockerfile 的同一个文件夹中创建一个.dockerignore文件,带有以下内容:

node_modules
npm-debug.log

这将避免你的本地模块以及调试日志被拷贝进入到你的 Docker 镜像中,以至于把你镜像原有安装的模块给覆盖了。

运行Dockerfile并且下载镜像

docker build -t li/node-web-app .
docker images

运行镜像

docker run -p 49160:8080 -d li/node-web-app
 #进入容器内
 docker exec -it <container id> /bin/bash

测试应用程序是否启动

curl -i localhost:49160

显示为

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 11
ETag: W/"b-Ck1VqNd45QIvq3AZd8XYQLvEhtA"
Date: Sun, 03 Jan 2021 03:42:36 GMT
Connection: keep-alive
Keep-Alive: timeout=5

Hello World
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 是一种容器技术,可以将应用程序和相关依赖项打包在一起,以便快速、可靠地部署和运行。下面是一些常见的步骤,用于在 Docker 中部署 Web 应用程序: 1. 编写 Dockerfile 文件,定义应用程序和依赖项的镜像。 2. 构建 Docker 镜像,使用 Dockerfile 文件生成应用程序的镜像。 3. 运行 Docker 容器,使用构建的镜像启动容器,并将容器映射到主机上的端口。 以下是一个基本的 Dockerfile 文件示例,用于构建一个 Node.js Web 应用程序的镜像: ``` FROM node:12 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD [ "npm", "start" ] ``` 该文件使用 Node.js 12 作为基础镜像,并将工作目录设置为 /app。然后,它将 package.json 和 package-lock.json 文件复制到容器中,并运行 npm install 安装所有依赖项。最后,它将应用程序的所有文件复制到容器中,并将容器的端口设置为 3000。应用程序启动时,它将通过 npm start 命令启动。 要构建 Docker 镜像,请在包含 Dockerfile 文件的目录中运行以下命令: ``` docker build -t myapp . ``` 这将构建一个名为 myapp 的镜像,并将其标记为最新版本(使用 . 表示当前目录作为构建上下文)。 要运行容器,请使用以下命令: ``` docker run -p 3000:3000 myapp ``` 这将在容器中运行 myapp 镜像,并将容器的端口映射到主机的端口 3000。现在,您可以通过浏览器访问 http://localhost:3000 来查看 Web 应用程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值