不想写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 命令时位于正确的目录中,以便将正确的当前目录传递给挂载点路径。同样,请根据实际情况进行相应的调整。