命令“ / bin / sh -c cd X”返回了非零代码:2

时间:2020-06-11 07:05:50

标签: node.js docker dockerfile

我有一个用于节点应用程序的dockerfile,它将具有react build文件夹与之一起运行。 我的cd API命令在Docker中工作。 我的文件夹结构:

|-api (folder of node)
|-client (folder of react)
|-.dockerignore
|-.Dockerfile
FROM node:10

WORKDIR /app

RUN chgrp 0 ./ && \
    chmod g=u ./

ADD client /app/client
RUN cd api
COPY package.json /app

RUN npm install
RUN npm audit fix

COPY . /app

EXPOSE 9000
CMD [ "npm", "start" ]

我想要的是将client文件夹放在我的容器中,然后将其移到api文件夹中,以在其中复制package.json文件夹并运行rest命令。

有任何解决方法的想法吗?

1 个答案:

答案 0 :(得分:1)

每个RUN命令在单独的shell中执行,因此这就是为什么当前目录不保留给下一个命令的原因。

RUN cd api

我想要的是将客户端文件夹放在容器中,然后移动 在api文件夹中复制其中的package.json文件夹并运行rest 命令。

您的问题不清楚,但我想您想要的是copy package.json from API folder to client folder之类的东西,而您没有复制api文件夹,因此该文件夹将不存在。

尝试这样的事情

ADD client /app/client
COPY api/package.json /app/

在此阶段,package.json位于主机上的api文件夹中,而不是容器中。 或者如果您要将package.json从API复制到客户端,请尝试

ADD client /app/client
COPY api/package.json /app/client

然后您可以执行其余命令。

RUN npm install
RUN npm audit fix

如果这不是您要的内容,请纠正我。