资讯专栏INFORMATION COLUMN

使用Docker部署Node应用

oneasp / 3498人阅读

摘要:本篇我们来动手实践在本地创建一个自己的镜像应用,使用该镜像创建容器并执行容器中的应用。非常简单,我们使用命令使用镜像创建一个容器实例此刻脑海中浮现。

上篇《前端也要学Docker啊!》介绍了 Docker 及它的三个主要概念:Image(镜像)、Container
(容器)、Registry(仓库) 以及Docker安装。

本篇我们来动手实践:在本地创建一个自己的镜像(Node应用),使用该镜像创建容器并执行容器中的Node应用。

创建一个Node项目

在根目录创建index.js

//index.js
const Koa = require("koa");
const app = new Koa();

app.use(async ctx => {
  ctx.body = "Hello Docker O(∩_∩)O~~";
});

app.listen(3000);

创建 Docker 镜像需要用到 docker build命令,而docker build命令又是根据 Dockerfile 配置文件来构建镜像,所以我们要在项目根目录创建一个 Dockerfile 文件:

#Dockerfile
FROM node:10.13-alpine #项目的基础依赖
MAINTAINER chenLong #项目维护者
COPY . . #将本机根目录所有文件拷贝到容器的根目录下 这个可以根据喜好调节路径
EXPOSE 3000 #容器对外暴露的端口
RUN npm i #安装node依赖
CMD npm start #在容器环境里执行的命令

你可以到 Docker 官网查看详细的Dockfile说明

构建镜像

上面 Node 代码已经完成了,我们使用 yarn init -ynpm init -y 完成package.json初始化,然后安装一个koa依赖:执行yarn add koanpm i koa

然后我们在本地跑一下 node 程序:node index.js,打开浏览器输入 localhost:3000 ,可以看到浏览器中成功显示了 Hello Docker O(∩_∩)O~~ 。

程序没问题,我们开始构建这个镜像,执行命令:docker build -t docker-demo/hello-docker:v1 . (注意最后有个 . 是必须的)

-t: --tag简写,镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

上面的 docker-demo/hello-docker是我们定义的镜像名称,v1是标签名称(类似版本号)


图中蓝色框表示 Dockerfile 的执行步骤。此时一个名为docker-demo/hello-docker的镜像已经创建完成了,现在我们执行docker images查看一下:

表示本地的镜像列表中已经有了我们刚才创建的docker-demo/hello-docker

让Node程序在Docker中跑起来

上面已经创建好了镜像,里面包含着我们写的代码,现在我们需要把代码运行起来。
非常简单,我们使用docker run命令使用镜像创建一个容器实例(此刻脑海中浮现 var p1 = new Person() )。

我们执行命令: docker run -i -t -p 8080:3000 docker-demo/hello-docker:v1

-i: 以交互模式运行容器,通常与 -t 同时使用;

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口,这里将容器的3000端口与宿主机的8080端口映射

打开浏览器,运行localhost:8080:

完美,容器里的代码已经跑起来了!

总结

在项目根目录创建 Dockerfile 并配置

使用 docker build 命令创建Docker镜像,该命令会根据 Dockerfile 里的配置来构建镜像

使用 docker run 命令根据镜像创建对应的容器实例并运行

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27911.html

相关文章

  • Docker Swarm部署应用的总结

    摘要:配置网络参照生产环境配置中的和子网章节。特别注意观察和的子网是否与已有网络冲突如果有冲突则参考网络的中的方法修改子网。部署使用的是的监控方案。创建应用网络创建你也可以改成自己的名字参考网络的检查子网与是否配置正确。 原文 大纲 本文只是一种实际部署方案的例子,涉及到的技术有(除Docker/Docker Swarm外): Docker overlay network Fluentd...

    Paul_King 评论0 收藏0
  • 使用Docker部署Node应用

    摘要:本篇我们来动手实践在本地创建一个自己的镜像应用,使用该镜像创建容器并执行容器中的应用。非常简单,我们使用命令使用镜像创建一个容器实例此刻脑海中浮现。 上篇《前端也要学Docker啊!》介绍了 Docker 及它的三个主要概念:Image(镜像)、Container(容器)、Registry(仓库) 以及Docker安装。 本篇我们来动手实践:在本地创建一个自己的镜像(Node应用),使...

    CastlePeaK 评论0 收藏0
  • Docker部署基于Nodejs的Web应用-实战篇

    摘要:采用虚拟化的技术来虚拟化出应用程序的运行环境。安装成功后,可以通过查看版本号尽量使用最新的稳定版本。是镜像名,是镜像的版本号,到此你已经成功构建了一个新的镜像,你可以通过,查看你的镜像。部署时将此文件到生产环境服务器上。 Docker docker是一个开源的应用容器引擎,可以为我们提供安全、可移植、可重复的自动化部署的方式。docker采用虚拟化的技术来虚拟化出应用程序的运行环境。此...

    marek 评论0 收藏0
  • Docker部署基于Nodejs的Web应用-实战篇

    摘要:采用虚拟化的技术来虚拟化出应用程序的运行环境。安装成功后,可以通过查看版本号尽量使用最新的稳定版本。是镜像名,是镜像的版本号,到此你已经成功构建了一个新的镜像,你可以通过,查看你的镜像。部署时将此文件到生产环境服务器上。 Docker docker是一个开源的应用容器引擎,可以为我们提供安全、可移植、可重复的自动化部署的方式。docker采用虚拟化的技术来虚拟化出应用程序的运行环境。此...

    mikasa 评论0 收藏0
  • 带你理解Kubernetes,部署一个Node应用

    摘要:应用实例创建完成后,会持续监视这些实例。创建时,会创建了一个来托管应用。通过请求,可以从集群的外部访问一个服务。使用云提供商的负载均衡器如果支持,可以向外部暴露服务。使用在中部署第一个应用本文以为例进行。目标是将简单的应用部署在上运行。 Kubernetes是什么? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。可以在物...

    qqlcbb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<