Dockerfile入口点与docker-compose上下文冲突

时间:2018-10-12 07:37:49

标签: docker docker-compose

我有一个docker设置,它的根目录没有Dockerfile或docker-compose,因为有很多服务。

build
 client.Dockerfile
deployments
 docker-compose.yml
web
  core
    scripts
      run.sh

docker-compose

version: "3.1"
services:
  client:
    build:
      context: ..
      dockerfile: ./build/client.Dockerfile
    volumes:
      - ./web/core:/app
    ports:
      - 3000:3000
      - 35729:35729

然后是dockerfile:

FROM node:10.11

ADD web/core/yarn.lock /yarn.lock
ADD web/core/package.json /package.json

ENV NODE_PATH=/node_modules
ENV PATH=$PATH:/node_modules/.bin
RUN yarn

WORKDIR /app
ADD web/core /app

EXPOSE 3000
EXPOSE 35729

RUN cat /app/scripts/run.sh

ENTRYPOINT ["/bin/bash", "/app/scripts/run.sh"]
CMD ["start"]

现在,RUN命令显示文件的结果,因此该文件在那里。但是,在运行docker-compose upclient_1 | /bin/bash: /app/scripts/run.sh: No such file or directory

我猜想它与docker-compose上下文有关,因为当dockerfile位于根目录时,它似乎可以正常工作。

我感觉到docker的设计本质上只能在根目录下工作。

上下文:

我想要一个实时重载的create-react-app服务器,像这样:https://www.peterbe.com/plog/how-to-create-react-app-with-docker

我想通过以下方式设置项目:https://github.com/golang-standards/project-layout

1 个答案:

答案 0 :(得分:1)

您的音量安装错误。这应该可以解决问题。我创建了类似的文件夹结构。从build的根文件夹中运行docker-compose -f ./deployments/docker-compose.yml up。只有更改音量路径,它才能正常工作。

volumes:
  - ../web/core:/app