Running a freshly created angular app in a docker container in windows does not hot reload the app on changes. I tried this Docker container doesn't reload Angular app.
but keeps failing, if I create the image then run the container I get:
web_1 | npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
I also tried following this article (Works on Mac but not Windows):
Dockerizing an Angular App
I tried adding --poll
to my angular.json
:
"docker": {
"poll": 2000
},
FROM node:8.11.2 # set working directory RUN mkdir /usr/src/app WORKDIR /usr/src/app # add `/usr/src/app/node_modules/.bin` to $PATH ENV PATH /usr/src/app/node_modules/.bin:$PATH COPY package.json /usr/src/app/package.json RUN npm install RUN npm install -g @angular/[email protected] # add app COPY . /usr/src/app EXPOSE 4200 49153 # start app CMD ng serve --port 4200 --host 0.0.0.0 --poll 1
That's how I run it:docker build -t something-clever .
For the container:docker run -it -v C:/Users/test-docker -v /usr/src/app/node_module -p 4200:4200 -p 49153:49153 --rm something-clever bash -c "npm start"
Any help is appreciated. Thank you.
There are a few things going wrong in your configuration, first of all I assume you want to bind C:/Users/test-docker
to /usr/src/app/node_module
?
If this is not the case you will need to bind the local project directory to /usr/src/app/node_module
. You can do this by using the syntax -v <source_dir>:<target_dir>
as described in the docs.
So this would result in docker run -it -v C:/Users/test-docker:/usr/src/app/node_module -p 4200:4200 -p 49153:49153 --rm something-clever bash -c "npm start"
Second of all, you are currently copying the files when you build the image, not when you run it. Meaning that the files currently present in the docker image will always remain the same unless you restart it. This step will become obsolete when you bind your project directory directly into the container.
By doing this the files will be updated on both your host and inside the docker container. So you can just remove the copy lines from your docker file after you have fixed the volume mounts.
I hope this helps you
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With