gpt4 book ai didi

node.js - 如何在 docker CMD 命令中运行多个 npm 脚本

转载 作者:行者123 更新时间:2023-12-02 18:47:15 32 4
gpt4 key购买 nike

我为 nodejs 项目创建了一个 Dockerfile。它包含一个包含许多脚本的 package.json。

"scripts": {
"start": "npm run",
"server": "cd server && npm start",
"generator": "cd generator && npm start",
...
},

我需要在我的 docker 镜像中运行 servergenberator。如何实现?

我试过:

CMD ls;npm 运行服务器; npm run generator 这不会找到包 json,因为 shellform 似乎在 /bin/sh -c 中运行。

CMD ["npm","run","server"] 也没有工作并且缺少第二个命令

第一次尝试中的 ls 显示所有文件都已就位(包括 package.json)。

为了完整起见,有问题的项目是https://github.com/seekwhencer/node-bilder-brause (不是我的)。当前的 Dockerfile:

FROM node:14

# Create app directory
WORKDIR /usr/src/app

# Bundle app source
COPY ./* ./

RUN npm install

EXPOSE 3050
EXPOSE 3055
CMD ls ; npm run server ; npm run generator

最佳答案

CMDENTRYPOINT 中运行多个命令的典型方法是将所有命令写入一个文件,然后运行该文件。这在下面的 Dockerfile 中进行了演示。

此 Dockerfile 还安装了 imagemagick,它是 OP 尝试使用的包的依赖项。我还将基本图像更改为 node:14-alpine,因为它比 node:14 小得多,但同样适用于此目的。

FROM node:14-alpine

# Install system dependencies for this package.
RUN apk add --no-cache imagemagick

# Create app directory
WORKDIR /usr/src/app

# Bundle app source
COPY . .

RUN npm install \
# Install server and generator.
&& npm run postinstall \
# Write entrypoint.
&& printf "ls\nnpm run server\nnpm run generator\n" > entrypoint.sh

EXPOSE 3050
EXPOSE 3055

CMD ["/bin/sh", "entrypoint.sh"]
docker build --tag nodebilderbrause .
docker run --rm -it nodebilderbrause

entrypoint.sh的内容写在Dockerfile中。这是该文件的样子。

ls
npm run server
npm run generator

关于node.js - 如何在 docker CMD 命令中运行多个 npm 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62628157/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com