我有一个用于节点应用程序的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命令。
有任何解决方法的想法吗?
答案 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
如果这不是您要的内容,请纠正我。