Executing scripts when docker starts
I recently needed to execute a shell script when Docker is starting. Why? I wanted dynamically take environment variables from the .env
file and convert them to JSON objects in index.html
.
It turns out that NGINX docker image has a special folder called /docker-entrypoint.d/
. It will take every shell script left there and execute it while running the container. Perfect for my case. What I learned as well (from Francisco Marques) is that there is a two-digit convention for naming Linux scripts. Why? It allows docker to execute them one by one in sorted order. In my case I wanted the shell script to run after internal docker scripts has already finished running so I put a 50
number at the beginning of the script name.
Summary
If you want to run a shell script when building a Docker container put a script inside /docker-entrypoint.d
folder (e.g by COPY
inside Dockerfile
). Make sure it has a number at the beginning of the script name so the script will be executed in proper order.