Nodejs私活利器,docker快速部署node.js应用

Nodejs私活利器,docker快速部署node.js应用

赞一个,docker是好东西,我在用它做自动化单元测试与CI集成。唯一的感觉就是还用不好img和container的关系,有的时候不得不重新编译IMG,弄得很痛苦。

47 回复

Nodejs私活利器,Docker快速部署Node.js应用

Docker 是一种轻量级的容器化技术,可以帮助开发者轻松地打包、部署和运行应用程序。对于 Node.js 开发者来说,使用 Docker 可以简化开发环境的配置和部署流程,确保应用在不同环境中的一致性。

1. 创建Dockerfile

首先,我们需要创建一个 Dockerfile 文件来定义如何构建 Docker 镜像。假设我们的 Node.js 应用程序目录结构如下:

my-node-app/
├── app.js
├── package.json
└── Dockerfile

Dockerfile 中,我们可以指定基础镜像、安装依赖、复制文件以及启动服务。以下是一个简单的示例:

# 使用官方的 Node.js 运行时镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 将当前目录下的 package.json 和 package-lock.json 复制到镜像中
COPY package*.json ./

# 安装 npm 依赖
RUN npm install

# 将当前目录下的所有文件复制到镜像中
COPY . .

# 暴露端口
EXPOSE 3000

# 启动应用
CMD ["npm", "start"]

2. 构建Docker镜像

在项目根目录下执行以下命令来构建 Docker 镜像:

docker build -t my-node-app .

这将根据 Dockerfile 中的指令生成一个新的 Docker 镜像,并标记为 my-node-app

3. 运行Docker容器

构建完成后,可以使用以下命令来运行容器:

docker run -d -p 3000:3000 --name my-running-app my-node-app

这将在后台运行一个名为 my-running-app 的容器,并将容器内的 3000 端口映射到主机的 3000 端口。

4. 使用Docker Compose(可选)

如果你的应用需要多个服务(例如数据库),可以使用 Docker Compose 来管理这些服务。创建一个 docker-compose.yml 文件:

version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

然后运行:

docker-compose up

这样,你就可以通过 Docker 快速部署和管理你的 Node.js 应用了。


以上步骤展示了如何使用 Docker 来打包、部署和运行 Node.js 应用。通过这种方式,你可以确保应用在不同环境中的一致性,简化开发和部署流程。


吴老师好厉害,顶起

还有一个情况我也不知是不是只有我这里出现,就是对于build失败的进程,有的时候没有办法退出。僵死在进程中了,吃了我机器50%多内存,现在还没好办法解决.

顶 !

太棒了!

好文一篇, 最近也在看docker

必须赞!

docker 必须赞

大赞!最近也在研究Docker,很棒!

vagrant用过,最后发现直接virtualbox更爽。

赞一个

感觉还是复杂了,hold 不住。。

好东西

vagrant 刚开始用觉得复杂,甚至觉得还不如自己手动搭,用顺了也觉得不错。

是不是相当于运行在一个虚拟机环境里啊?

使用ssh连接虚拟机一直连不上,connecting之后就显示:

Bad port '0'
error in run: exit status 255

什么情况啊?

docker能不能放到那些智能路由器上面去呢?是不是有点异想天开了呢?

正是最近看了这篇文章,我才决定把评论改为平铺式的…要不找最新评论太辛苦了。

不玩docker,不玩虚拟机,以开这些东东,电脑啥活也别想干了:(

干货,赞一个

回复以马克,赞👍

马克下

来自酷炫的 CNodeMD

墙是个大问题~~~ 慢得要死要死的~~

必须赞!

这样的利器,就被你用来做私活了? ibus-daemon -drx 原来ubuntu的拼音输入法是这么用的

求教一个问题. 本地文件和container能保持同步吗? 我目前的理解是,在本地开发->生成image->由image建成相应container->在本地hit相应端口看结果. 如果是这个流程,那我如果本地更改了代码如果想看结果每次都跑一遍这个流程感觉太复杂了啊。 有没有更好的方式?

2年过去了。。。。 boot2docker 改用 docker-machine 了。。

又浮上来了

请问,我nodejs项目里面有几百M的Nodemodules 您是推荐使用 Build的时候进行 RUN npm install 还是使用在git clone以后 进行npm install ,Docker只是进行.目录COPY

Nodejs私活利器,Docker快速部署Node.js应用

Docker 是一种轻量级的虚拟化技术,可以方便地将你的应用及其依赖打包成一个独立的容器。这不仅有助于简化部署流程,还能确保不同环境下的应用一致性。对于Node.js开发者来说,Docker可以大大简化开发、测试和生产环境的部署过程。

步骤1: 创建Dockerfile

首先,你需要创建一个 Dockerfile 文件来定义你的应用如何构建和运行。假设你有一个简单的Node.js应用结构如下:

my-node-app/
├── app.js
├── package.json
└── Dockerfile

Dockerfile 中,你可以使用以下内容:

# 使用官方Node.js镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 复制package.json和package-lock.json
COPY package*.json ./

# 安装项目依赖
RUN npm install

# 复制应用代码
COPY . .

# 暴露应用端口
EXPOSE 3000

# 定义启动命令
CMD [ "npm", "start" ]

步骤2: 构建Docker镜像

在项目根目录下运行以下命令来构建镜像:

docker build -t my-node-app .

步骤3: 运行Docker容器

构建完成后,可以使用以下命令来运行容器:

docker run -d -p 3000:3000 --name my-running-app my-node-app

这将会启动一个容器,并将宿主机的3000端口映射到容器内的3000端口。

总结

通过以上步骤,你就可以利用Docker快速部署你的Node.js应用。这种方式不仅简化了部署流程,还能确保应用在不同环境中的一致性。如果你对Docker的imagecontainer概念还有疑问,建议查阅官方文档或做一些简单的实验来加深理解。

希望这个简单的指南能帮助你在私活中更加高效地使用Docker!

回到顶部