Can I use restarting docker instead restarting app in container? - node.js

I run app in Docker container. I didn't bundle the app's code into image, but using -v to map the code into container in order to upgrade the code more conveniently.
I used to use pm2 to manage the process, and when I upgrade the code, I use docker exec -it app bash to go into the container and run pm2 restart.
But now I didn't use pm2 any more, just run node app.js. When I upgraded the code and need to restart the app, I run docker restart to restart the container directly.
If there is any side effect of docker restart? Or is there a better way to restart a node app?

Doing a docker restart will just restart the node process in your container, not much. So there's no side effect.

Related

Docker is not pointing to existing containers

I'm on Ubuntu and I am using docker for my Laravel application but after the restart, I can't execute commands like docker-compose up -d, docker-compose restart, docker-compose exec backend PHP artisan migrate anymore. I checked other solutions like killing containers running on that specific port but the problem keeps coming back. What seems to be the problem?
whenever I try docker-compose up -d, this is the result:
Error Logs
My application is completely running, but somehow I can't execute Laravel artisan commands so I tried restarting it, but it's pointing to these containers instead of the ones that are currently running:
Containers

Docker container doesn't restart after nodejs app crashes?

So i have a running container with node js app inside of it (express). The docker container has restart: always policy and when the app crashes, the container doesn't pick up that crash so it doesn't restart. My question is how do i make the container notice that my app crashed? Or do i use extra libraries like forever or pm2(which will keep my app running from INSIDE container) or how do i handle this specific case?

Debug dockerized nodejs application on startup

I have a setup of containers running ( docker-compose ) and one with a nodejs application running inside of it. Currently i debug the application by connecting via VS Code to the debug port (9229) of the application. The problem with this approach is that i can't connect to the application on startup. If the error is on some event like an http connection that is no problem, but if i want to check the initialisation process the process is already running for some time until i can connect so the process ran past my debug points.
Is there a solution to this?
Run the following commands to find the running container and navigate into the container...
List all Docker images: docker image ls
View contents of a running Docker container: docker exec -it <container-id> bash
once inside the container, then you can stop the node process inside the container and start by node app.js where you will be able to see the logs from initialisation Or if you have a logs file then there aswell you can check.
The basic idea here is to navigate inside the docker container and then its like running node server like how you would run normally from ay linux terminal.

Live reload Node.js dev environment with Docker

I'm trying to work on a dev environment with Node.js and Docker.
I want to be able to:
run my docker container when I boot my computer once and for all;
make changes in my local source code and see the changes without interacting with the docker container (with a mount).
I've tried the Node image and, if I understand correctly, it is not what I'm looking for.
I know how to make the mount point, but I'm missing how the server is supposed to detect the changes and "relaunch" itself.
I'm new to Node.js so if there is a better way to do things, feel free to share.
run my docker container when I boot my computer once and for all;
start containers automatically with the docker daemon or with your process manager
make changes in my local source code and see the changes without
interacting with the docker container (with a mount).
You need to mount your dev app folder as a volume
$ docker run --name myapp -v /app/src:/app image/app
and set in your Dockerfile nodeJs
CMD ["nodemon", "-L", "/app"]

Kubernetes restarting pods

I have containerized node js app running on kubernetes which has volume mounted to host.
For development purpose when there is any change in the host volume dir / files the node app should restart.
In Dockerfile i have
CMD ["forever", "index.js"]
This will just start the app when container starts, but it is not restarting when the change occurs.
I have cross checked and made sure that changes are syncing properly from host volume to container
forever needs a flag to restart on file changes. Try with:
CMD ["forever", "-w", "index.js"]
I tend to use nodemon in development because it watches file changes by default and won't try to restart the app if it fails (only a file change triggers a start), forever will try to restart forever.

Resources