linux把当前目录挂在到docker运行nodejs应用

文章介绍了如何使用单行`dockerrun`命令以及如何用DockerCompose文件来启动一个Node.js应用。关键点包括使用`dockerrun`的参数如`-d`,`-p`,`-v`等,以及在DockerCompose中定义服务、映射端口、挂载卷和设置工作目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不想写Docker File,也不想写Docker Compose, 在 Docker 容器中运行一个 Node.js 应用

可以使用下面命令

docker run -itd --restart=always --name node8010 -p 8010:8010 -v $(pwd):/data -w /data -d node:14.21.3-slim node /data/webhook.node.js

这个 `docker run` 命令用于在 Docker 容器中运行一个 Node.js 应用。下面是该命令的详细解释:

- `docker run`: 用于创建并运行一个 Docker 容器。
- `-itd`: 这是一些选项的组合,它们的含义如下:
  - `-i`:保持标准输入 (STDIN) 打开,允许你与容器进行交互。
  - `-t`:为容器分配一个伪终端(pseudo-tty),使你能够在容器内执行命令。
  - `-d`:在后台(守护进程)模式下运行容器。
- `--restart=always`: 指定容器在退出时自动重启。这样,如果容器在某些情况下终止,Docker 会自动重新启动它。
- `--name node8010`: 为容器指定一个名称为 `node8010`,方便后续管理。
- `-p 8010:8010`: 将容器的端口 8010 映射到主机的端口 8010。这允许我们通过主机上的端口来访问容器内运行的服务。
- `-v $(pwd):/data`: 将当前工作目录挂载到容器内的 `/data` 目录。`$(pwd)` 是 Linux shell 中获取当前工作目录的命令。这将使主机和容器之间可以共享文件。
- `-w /data`: 设置容器的工作目录为 `/data`。
- `-d`: 使用镜像为 `node:14.21.3-slim`,这是一个基于 Node.js 14.21.3 版本的轻量级镜像。
- `node /data/webhook.node.js`: 在容器内执行的命令。这里是运行 `node /data/webhook.node.js`,其中 `/data/webhook.node.js` 是在容器内的 `/data` 目录下的一个 Node.js 脚本文件。

使用这个 `docker run` 命令,你可以在容器中以后台运行的方式,启动一个名为 `node8010` 的容器,映射到主机的 8010 端口,并执行 `/data/webhook.node.js` 脚本文件。

那么怎么在Docker Compose里面表达这个命令呢

下面是将该 docker run 命令转换为 Docker Compose 的示例:

version: '3'

services:
  node8010:
    image: node:14.21.3-slim
    restart: always
    ports:
      - 8010:8010
    volumes:
      - ${PWD}:/data
    working_dir: /data
    command: node webhook.node.js

将上述内容保存为 docker-compose.yml 文件,并在包含该文件的目录下运行以下命令:

docker-compose up -d

这将使用 Docker Compose 创建并运行一个名为 node8010 的服务,使用 node:14.21.3-slim 镜像,容器的 8010 端口映射到主机的 8010 端口,并将当前目录 (${PWD}) 挂载到容器的 /data 目录。此外,容器的工作目录被设置为 /data,并最后执行 node webhook.node.js 命令。

请确保在运行 Docker Compose 命令时位于正确的目录中,以便将正确的当前目录传递给挂载点路径。同样,请根据实际情况进行相应的调整。

### 配置和运行Node.js 18于Docker容器 为了在Docker容器中配置并运行Node.js 18版本,可以遵循官方推荐的方法来创建一个适合的`Dockerfile`文件。此过程涉及指定基础镜像、设置工作目录、安装依赖项以及定义启动命令。 #### 创建Dockerfile 首先,在项目根目录下创建名为`Dockerfile`的文本文件,并向其中添加如下内容: ```dockerfile # 使用官方Node.js 18作为基础镜像 FROM node:18-alpine # 设置应用程序的工作目录 WORKDIR /usr/src/app # 将当前目录下的所有文件复制到容器内的工作目录 COPY . . # 安装npm包 RUN npm install --production # 暴露应用监听端口 EXPOSE 3000 # 启动node服务,默认执行package.json中的start脚本 CMD ["npm", "start"] ``` 上述指令选择了轻量级的Alpine Linux发行版作为宿主操作系统,并指定了Node.js的具体版本为18[^4]。通过这种方式能够确保每次构建时都使用相同的环境变量,从而提高开发效率并减少潜在错误的发生概率。 对于希望使Node.js应用对外部请求开放的情况,需注意让其绑定至`0.0.0.0`地址而非默认的`localhost`,以便可以从主机或其他联网设备访问该服务[^3]。 完成以上步骤之后,可以通过以下命令构建Docker镜像并与之交互: ```bash # 构建镜像 docker build -t my-node-app . # 运行容器实例 docker run -p 3000:3000 -d my-node-app ``` 这会将本地机器上的3000端口映射到容器内部的服务上,使得外界可以直接连接到正在运行应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值