Dockerfile部署nodejs服务

 2023-12-24  阅读 2  评论 0

摘要:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。 初始化file 假设我们的项目名为express,在express项目中创建编辑Dockerfile文件: $ vim Dockerfile FROM node:latest RUN mkdir -p /home/www/express WORK

Dockerfile部署nodejs服务

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。

初始化file

假设我们的项目名为express,在express项目中创建编辑Dockerfile文件:

$ vim Dockerfile    FROM node:latest    RUN mkdir -p /home/www/express  WORKDIR /home/www/express    COPY . /home/www/express    RUN npm install    EXPOSE 3000    ENTRYPOINT ["npm", "run"]  CMD ["start"]

这个文件包含了以下命令:

  • FROM node:latest – 指定使用最新版本的node基础镜像
  • RUN mkdir -p /home/www/express – 在容器内创建/home/www/express目录
  • WORKDIR /home/www/express – 将容器内工作目录设置为/home/www/express
  • COPY . /home/www/express – 将宿主机当前目录下内容复制到镜像/home/www/express目录下
  • RUN npm install – npm install安装应用所需的NPM包
  • EXPOSE 3000 – 对外开放容器的3000端口
  • ENTRYPOINT [“npm”, “run”] – 容器启动后执行的命令。不可被docker run提供的参数覆盖
  • CMD [“start”] – 在容器启动时,执行的命令,可被docker run提供的参数覆盖

构建镜像

编写完Dockerfile文件后,就可以通过docker build命令来构建镜像:

$ sudo docker build -t test/express .

我们通过-t参数,将镜像命名为test/express。构建过程类似如下:

Sending build context to Docker daemon 29.7 kB  Step 1/8 : FROM registry.src.followme.com:5000/node:v1   ---> c99c549e8227  Step 2/8 : RUN mkdir -p /home/www/express-app   ---> Running in 8be9a90629b0   ---> b9f584851225  Removing intermediate container 8be9a90629b0  Step 3/8 : WORKDIR /home/www/express-app   ---> 5072c31f9dd9  Removing intermediate container e9dbf4ce3d8b  Step 4/8 : COPY . /home/www/express-app   ---> a4d1725f15ed  Removing intermediate container 30aa49765015  Step 5/8 : RUN yarn   ---> Running in f181c243deaa  yarn install v1.3.2  [1/4] Resolving packages...  [2/4] Fetching packages...  [3/4] Linking dependencies...  [4/4] Building fresh packages...  Done in 9.46s.   ---> d390931d73e6  Removing intermediate container f181c243deaa  Step 6/8 : EXPOSE 3000   ---> Running in 94101ab38864   ---> 43199a8a5a90  Removing intermediate container 94101ab38864  Step 7/8 : ENTRYPOINT npm run   ---> Running in 80b1318962cf   ---> 6b203c50e855  Removing intermediate container 80b1318962cf  Step 8/8 : CMD start   ---> Running in a9909e537f59   ---> d56eae48377c  Removing intermediate container a9909e537f59  Successfully built d56eae48377c  

运行容器

镜像构建完成后,可以通过所构建的镜像创建/运行容器,从而实现express应用的 Docker 化部暑。

使用tets/express镜像运行一个容器:

$ sudo docker run -d --name experss-app -p 3000:3000 test/express

在以上操作中,我们通过test/express镜像运行了容器,并将容器命名为experss-app。运行容器,我们还指定了-d参数,该参数使容器以后台的方式运行。而-p参数将宿主机的3000端口映射到了容器的3000端口。运行容器后,可以通过docker ps命令看到运行中的容器。此时可通过localhost:3000访问服务。

提示:现在腾讯云新人点击注册然后实名认证后,可以点此一键领取2860元代金券,然后点此进入腾讯云活动页面参加优惠力度非常大的腾讯云3年和5年时长服务器活动,一次性买多年,免得续费贵,这样就可以获得最大的优惠折扣,省钱。

版权声明:xxxxxxxxx;

原文链接:https://lecms.nxtedu.cn/yunzhuji/130965.html

发表评论:

验证码

管理员

  • 内容1196553
  • 积分0
  • 金币0
关于我们
lecms主程序为免费提供使用,使用者不得将本系统应用于任何形式的非法用途,由此产生的一切法律风险,需由使用者自行承担,与本站和开发者无关。一旦使用lecms,表示您即承认您已阅读、理解并同意受此条款的约束,并遵守所有相应法律和法规。
联系方式
电话:
地址:广东省中山市
Email:admin@qq.com
注册登录
注册帐号
登录帐号

Copyright © 2022 LECMS Inc. 保留所有权利。 Powered by LECMS 3.0.3

页面耗时0.0100秒, 内存占用340.48 KB, 访问数据库18次

  • 我要关灯
    我要开灯
  • 客户电话
    lecms

    工作时间:8:00-18:00

    客服电话

    电子邮件

    admin@qq.com

  • 官方微信

    扫码二维码

    获取最新动态

  • 返回顶部