docker 打包_用 Docker 打包 Node.js 程序

// 每日前端夜话 第378篇
// 正文共:1600 字
// 预计阅读时间:7 分钟
a6cff18f701e3584052d5b28c3d28730.png

你听到过这样的对话吗?

程序猿1:在我的计算机上不能用 ?

程序猿2:在我这里好好的啊 ?

这种对话很常见。这一般是由于工作环境设置或配置不同而引起的。这就是为什么要使用 docker 的主要目的。

在文中,我将教你什么是 docker,为什么使用以及怎样用来给 nodejs 程序打包。

什么是Docker?

Docker 的定义为:

Docker 是一个容器化平台,用于将应用程序及其依赖项打包在一起,以确保无论工作环境如何,应用程序都能轻松运行。

好吧,这些文字只是告诉我们:

Docker 是一种用容器轻松创建、部署和运行应用程序的工具。

为什么要使用 Docker?

Docker 会将你的机器环境与你的代码一起提供给其他人,这样当你团队伙伴得到你的代码时,他们也可以得到你的机器配置。由于代码在拥有这些配置的计算机上运行,因此肯定可以在其它计算机上运行,因为它们具有和你相同的配置。

现在可以把用在配置新计算机上的时间投入到更具更重要的工作中。

如何使用 Docker?

安装
  • 请访问 Docker 官网[1]
  • 在菜单中的 「Docker Desktop」 选项卡下查看如何为你的机器安装 docker

「Windows 用户请注意」

「1. 你需要在计算机中启用虚拟化。要检查是否启用了虚拟化,请按照以下步骤操作:」

  • 在键盘上按 ctrl + alt + del
  • 在随后的菜单中选择“任务管理器”
  • 在弹出的 Windows 对话框中单击“性能”标签。这是我的
6a20c070605ffe6004341e3f4698dd88.png

「2. 对于使用 Windows 8 或更早版本的用户,请使用 docker toolbox[2]

用 Docker 给 Nodejs 程序打包

确保已启动 docker,并且将其设置为 running,以便你查看更改或 docker 效果。

  • 首先从 github 克隆项目[3]
  • 按照自述文件中的说明[4]设置项目。
  • 如果你设置完成了项目并且运行了服务器,则应该在浏览器中得到以下响应
9aad6dd99840bcdab7ba2ba99dde5181.png
  • 接下来,在项目的根目录中创建一个文件,并将其命名为 Dockerfile,不带扩展名。
配置 Dockerfile
  • 在文件中输入以下代码来指定我们正在使用的  docker node
# use docker node 10
FROM node:10
  • 输入以下代码为 Docker 应用创建目录
# create a directory to run docker
WORKDIR /app
  • 以下代码把 package.json 文件复制到 /app 目录中
# copy package.json into the new directory
COPY package.json /app
  • 以下代码在 Docker 应用中安装项目的依赖项
# install the dependencies
RUN npm install
  • 现在把项目中的所有的文件和文件夹复制到 docker 的 /app目录中。以下是代码:
# copy all other files and folder into the app directory
COPY . /app
  • 以下代码指定 docker 应用运行的端口
# open port 5000
EXPOSE 5000
  • 使用以下代码运行 docker 应用
# run the server
CMD node index.js

现在我们的 Dockerfile 看起来是这样:

# use docker node 10
FROM node:10

# create a directory to run docker
WORKDIR /app

# copy package.json into the new directory
COPY package.json /app

# install the dependencies
RUN npm install

# copy all other files into the app directory
COPY . /app

# open port 5000
EXPOSE 5000


# run the server
CMD node index.js
构建 Docker 应用
  • 要构建 docker 应用,请在终端中键入以下命令,然后按 Enter
docker build -t docker-node-app .

你的终端应输出类似下面的信息:

b333820ccb35a1fb1ef2a7f34c5bd30e.png
Docker Build Image

在上面的命令中,docker-node-app 是我们正在创建的 docker 应用的名称。你的可能会有所不同。另外,请不要忘记结尾处的句点(.)

运行 Docker App
  • 最后在终端中用以下命令运行 docker 应用:
docker run -it -p 5000:3000 docker-node-app

它会输出与普通应用完全相同的消息,但是这次,它加载在端口5000上d8866fcf52612f92ea9f015d743c107a.png在上面的命令中,我们告诉 docker 运行在端口 5000 上构建的程序,即使我们的程序运行在端口 3000 上。

结果

现在,我们的 Docker 运行在 5000 端口上,而原始应用程序运行在 3000 端口上。检查你的浏览器

18daf94abd9307033875a7ca592dfc0a.png

要查看所有正在运行的 docker 程序,请在终端中使用以下命令

docker ps
29ae588f14ee9822a8ec174ee3387091.png

如果检查 Docker 仪表板,则会看到你的 Docker 程序:

ee39aa0082f7779c0b55f175b7f88f5a.png

你已经用 docker 创建了你的第一个部署? 。

总结

在快速迭代的系统中, docker 是很重要。因此我们需要学习它。

我们使用的大多数代码都在 docker hub[5] 上找到。像 Microsoft、mongoDB、PHP 等许多公司已经为这些事情制作了代码(或镜像),因此你需要做的就是制作自己的副本。

这些配置称为镜像。例如可以在这里找到我们所使用的 node 镜像[6]

谢谢你的阅读。?


作者:NJOKU SAMSON EBERE
翻译:疯狂的技术宅
原文:https://dev.to/ebereplenty/docker-an-introduction-with-nodejs-4o2j?utm_source=dormosheio&utm_campaign=dormosheio
8db2b8c4492d246fd4f5a1aa037b1f4d.png
7ccb99f2eee4e8af2f68f1fe5b969d0c.gif
8db2b8c4492d246fd4f5a1aa037b1f4d.png
85feefbb4b61e0f6033c1e4dfcc51661.png
精彩文章回顾,点击直达
76b6d0e20dd25c8c6ae80e5d407f24fb.png 前端先锋

长按扫描维码
关注我们 获取更多前端资讯
|最新技术|业界动态|

|学习视频|源码资源|

前端先锋

Reference

[1]

Docker 官网: https://docs.docker.com/engine/

[2]

docker toolbox: https://docs.docker.com/toolbox/toolbox_install_windows/#how-to-uninstall-toolbox

[3]

从 github 克隆项目: https://github.com/EBEREGIT/server-tutorial

[4]

自述文件中的说明: https://github.com/EBEREGIT/server-tutorial#setting-up

[5]

docker hub: https://hub.docker.com/

[6]

这里找到我们所使用的 node 镜像: https://hub.docker.com/_/node

568060b4abd90770dccb4c7b069a81a5.gif转了吗 4010a6a9c7a8e35ce92f01960cacb29d.gif赞了吗 f1359a48930c576b70ccbb9998209700.gif在看吗
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值