I have a service that I am bringing up through Rancher via docker-compose. The issue I am running into is that I need to set a password after the container has been deployed.
The way rancher secrets work, is that I set my secret in and rancher will mount a volume on my container with a file containing my secret. I was hoping to be able to execute a script to grab that secret, and set it as a password on my config file.
I don't believe I have a way to get that secret in through the Dockerfile as I don't want the secret to be in git, so I'm left looking at doing it via docker-compose.
Does anyone know if this is possible?
The trick is to overwrite the compose COMMAND to perform whatever init action you need before calling the original command.
init.sh
. You add it to your image.Dockerfile:
FROM: sourceimage:tag COPY init.sh /usr/local/bin/ ENTRYPOINT []
The above overrides whatever ENTRYPOINT is defined in the sourceimage
. That's to make this example simpler. Make sure you understand what the ENTRYPOINT is doing in the Dockerfile from the sourceimage
and call it in the command:
of the docker-compose.yml file.
docker-compose.yml:
services: myservice: image: something:tag ... command: sh -c "/usr/local/bin/init.sh && exec myexecutable"
It's important to use exec
before calling the main command. That will install the command as the first process (PID1) which will make it receive signals like STOP, KILL (Ctrl-C on keyboard) or HUP.
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