我正在处理2 package.json,并且从我的一个Docker文件中尝试在每个文件夹中运行一系列命令。我试图把头放在WORKDIR周围,因为它不符合我的预期。
应用程序结构
package.json
client/
package.json
Dockerfile
Dockerfile
FROM ...
RUN npm install -g yarn
# run yarn install and build inside the client folder
WORKDIR ./client
RUN yarn install
RUN yarn build
# go back to the parent directory and run yarn install then CMD
WORKDIR ../
COPY . .
RUN yarn install
EXPOSE 6000
CMD ["yarn", "start"]
在此示例中处理WORKDIR的正确方法是什么?
我不断收到error Couldn't find a package.json file in "/client"
,这使我相信我没有正确使用WORKDIR。
答案 0 :(得分:1)
yarn build
在当前目录下需要一个package.json
,因此需要确保文件夹client
下有一个。
实际上,当您执行WORKDIR ../
和COPY . .
时,工作目录已经更改,不是在文件夹client
中,而是在client
的父目录中。
# run yarn install and build inside the client folder
WORKDIR ./client
COPY . .
RUN yarn install
RUN yarn build
同时,确保您的package.json具有build command
:
"scripts": {
"start": "node ./app.js",
"build": "ls"
},