我有一个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 up
时client_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
答案 0 :(得分:1)
您的音量安装错误。这应该可以解决问题。我创建了类似的文件夹结构。从build
的根文件夹中运行docker-compose -f ./deployments/docker-compose.yml up
。只有更改音量路径,它才能正常工作。
volumes:
- ../web/core:/app