使用Docker在两个文件夹中编译两个应用

时间:2019-07-09 23:02:47

标签: docker docker-compose

我正在处理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。

1 个答案:

答案 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"
},