I'm doing:
docker-compose up
my service is essentially to run netlify dev
Because we may deal with several _redirects_xxx files, I have in my entrypoint.sh something like:
cleanup() {
if $remove; then
echo ">>> Removing created _redirects"
rm -fv /app/_redirects
else
echo "Bye!"
fi
}
reddoc=${1}
remove=false
if [ ! -s "/app/_redirects" ]; then
echo ">>> Copying ${reddoc} to _redirects"
cp /app/${reddoc} /app/_redirects
remove=true
else
echo ">>> _redirects already exists"
fi
trap 'cleanup' INT TERM EXIT
echo ">>> remove = ${remove}"
netlify dev
From my docker-compose.yml, I have:
...
frontend:
volumes:
- ./frontend/:/app
- node_modules:/app/node_modules
...
init: true
command: bash ./entrypoint.sh _redirects_docker
...
The point is, some developers have their own _redirects file so when starting the docker service, we don't want to override their setup. But for all other developers (mostly backend guys) we want the _redirects_docker to take place but, when stopping the frontend service (e.g. crtl-C or docker-compose stop / down), I'd like a closure step to remove the _redirects file if it was not there from the very beginning.
I've tried, as you may see, above with TRAP and init but it's not working to delete _redirects.
UPDATE 25/Nov/2020
Not a solution yet, but I found out that if I do this in another terminal:
docker kill -s hup frontend_1
It triggers the trap and does what I want. However using -s int or -s term does not do anything.
UPDATE 26/Nov/2020
I found out that the issue is on how to trap netlify dev. If I use a zombie line instead, like, while true; do :; done, stopping the docker service, no matter how, except with a pure kill, will trigger the routine cleanup.
Honestly, an exitpoint: pragma in docker-compose.yml would be all I ever wanted.
In the end, this worked for me by amending
entrypoint.shwith: