user3162553
user3162553

Reputation: 2859

Dockerfile entrypoint conflicts with docker-compose context

I have a docker setup that does not have the Dockerfile or docker-compose at the root because there are many services.

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

And then the 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"]

Now the RUN command displays the result of the file so it is there. However, when running docker-compose up the client_1 | /bin/bash: /app/scripts/run.sh: No such file or directory

I'm guessing it has something to do with the docker-compose context because when the dockerfile was at the root, it seemed to work fine.

I'm getting the feeling that docker is designed essentially to work only at the root.

Context:

I want a live reloading create-react-app server like this: https://www.peterbe.com/plog/how-to-create-react-app-with-docker.

I would like to setup my project this way: https://github.com/golang-standards/project-layout

Upvotes: 0

Views: 795

Answers (1)

Ntwobike
Ntwobike

Reputation: 2741

Your volume is wrongly mounting. This should fix the issue. I created the similar folder structure. From the root folder of build ran docker-compose -f ./deployments/docker-compose.yml up. It works normally only thing i change volume path.

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

Upvotes: 1

Related Questions