我是靠谱客的博主 直率摩托,最近开发中收集的这篇文章主要介绍简单的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 的文件构建你的镜像运行镜像所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复