Docker version 20.10.21
docker run command with -v option works as expected when the destination path is other than /app. But when the destination path is /app it doesn't work as expected.
command works as expected:
docker run -d -v ${pwd}:/app2 react-app
command not works as expected:
docker run -d -v ${pwd}:/app react-app
as seen in the snapshot there is not port for the second container
here is Dockerfile content
FROM node:14.16.0-alpine3.13
RUN addgroup app && adduser -S -G app app
USER app
WORKDIR /app
RUN mkdir data
COPY package*.json .
RUN npm install
COPY . .
ENV API_URL=http://api.myapp.com/
EXPOSE 3000
CMD [ "npm", "start" ]
CodePudding user response:
You are running npm install
in /app
in the Dockerfile, but then at runtime you are mounting pwd
over the files you installed in /app
during the build process. Don't install your dependencies in /app
during the build if you want to mount to /app
at runtime.
CodePudding user response:
Please try using $(pwd)
instead of ${pwd}
. Also if you are running it under Windows then you probably need to use some shell which implements pwd
command correctly. E.g. Git Bash
.
docker run -d -v $(pwd):/app react-app
Also once you start the container please check docker container inspect <container ID>
, specifically Mounts
section.
Or you can filter the output:
docker container inspect <container ID> -f '{{ .Mounts }}'
Also if you see that container exits immediately, please check its logs with
docker logs <container ID>
CodePudding user response:
I solved it by excluding the node_modules from the mounting as:
docker run -d -v ${pwd}:/app -v /app/node_modules react-app