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

概述

编写一个简单的nodejs应用

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

{
"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 应用:

// 引入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 现在看上去是这个样子:

# 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

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

# 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 镜像。
注意这里是有个点的,点标明是在根据当前目录构建

$ docker build . -t demo

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

$ docker images
# Example
REPOSITORY
TAG
ID
CREATED
node
10
1934b0b038d1
5 days ago
demo
latest
d64d3505b0d2
1 minute ago

运行镜像

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

$ docker run -d --name demo -p 3000:3000 demo

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

$ docker exec -it <容器名/容器Id> /bin/bash

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

$ docker container update --restart=always <容器名/容器Id>

最后

以上就是直率摩托为你收集整理的简单的nodejs应用打包成docker镜像编写一个简单的nodejs应用创建一个名称为 Dockerfile 的文件构建你的镜像运行镜像的全部内容,希望文章能够帮你解决简单的nodejs应用打包成docker镜像编写一个简单的nodejs应用创建一个名称为 Dockerfile 的文件构建你的镜像运行镜像所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部