我是靠谱客的博主 直率摩托,这篇文章主要介绍简单的nodejs应用打包成docker镜像编写一个简单的nodejs应用创建一个名称为 Dockerfile 的文件构建你的镜像运行镜像,现在分享给大家,希望可以做个参考。

编写一个简单的nodejs应用

首先,创建一个新文件夹以便于容纳需要的所有文件,并且在此其中创建一个 package.json 文件,描述你应用程序以及需要的依赖:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{ "name": "docker_web_app", "version": "1.0.0", "description": "Node.js on Docker", "author": "Joy", "main": "app.js", "scripts": { "start": "node app.js" }, "dependencies": { "express": "^4.17.1" } }

配合着你的 package.json 请运行 npm install。如果你使用的 npm 是版本 5 或者之后的版本,这会自动生成一个 package-lock.json 文件,它将一起被拷贝进入你的 Docker 镜像中。

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
// 引入Express模块 const express = require('express'); const PORT = 3000; const HOST = '0.0.0.0'; // 实例化 const app = express(); app.get('/', (req, res) => { res.send('Hello World'); }); // 监听 app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`);

创建一个名称为 Dockerfile 的文件

你的 Dockerfile 现在看上去是这个样子:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# from 构建镜像的基础源镜像 该image镜像文件继承官方的node image FROM node:10.0 # 在容器中创建一个目录 RUN mkdir -p /usr/src/app/ # 定位到容器的工作目录 WORKDIR /usr/src/app/ # RUN/COPY是分层的,package.json 提前,只要没修改就不会重新安装包 COPY package.json /usr/src/app/package.json RUN cd /usr/src/app/ RUN npm i # 把当前目录下所有的文件拷贝到 Image 的 /usr/src/app/目录下 COPY . /usr/src/app/ EXPOSE 3000 CMD npm start

或者这个样子:(上面的不行就用下面的)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
# from 构建镜像的基础源镜像 该image镜像文件继承官方的node image FROM node:10.0 # 在容器中创建一个工作目录 WORKDIR /usr/src/app # RUN/COPY是分层的,package.json 提前,只要没修改就不会重新安装包 COPY package*.json ./ RUN npm install -g cnpm --registry=https://registry.npm.taobao.org RUN cnpm install # 捆绑应用程序源 COPY . . EXPOSE 3000 CMD ["node", "app.js"]

构建你的镜像

进入到 Dockerfile 所在的那个目录中,运行以下命令构建 Docker 镜像。
注意这里是有个点的,点标明是在根据当前目录构建

复制代码
1
2
$ docker build . -t demo

Docker 现在将给出你的镜像列表:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ docker images # Example REPOSITORY TAG ID CREATED node 10 1934b0b038d1 5 days ago demo latest d64d3505b0d2 1 minute ago

运行镜像

使用 -d 模式运行镜像将以分离模式运行 Docker 容器,使得容器在后台自助运行。开关符 -p 在容器中把一个公共端口导向到私有的端口,请用以下命令运行你之前构建的镜像:

复制代码
1
2
$ docker run -d --name demo -p 3000:3000 demo

如果你需要进入容器中,请运行 exec 命令:

复制代码
1
2
$ docker exec -it <容器名/容器Id> /bin/bash

如果你需要设置容器随docker启动而启动

复制代码
1
2
$ docker container update --restart=always <容器名/容器Id>

最后

以上就是直率摩托最近收集整理的关于简单的nodejs应用打包成docker镜像编写一个简单的nodejs应用创建一个名称为 Dockerfile 的文件构建你的镜像运行镜像的全部内容,更多相关简单的nodejs应用打包成docker镜像编写一个简单的nodejs应用创建一个名称为内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(89)

评论列表共有 0 条评论

立即
投稿
返回
顶部