Doppler CLI in Dockerfile
Inject secrets at runtime by embedding the Doppler CLI in your Dockerfile.
Prerequisites
- Experience with deploying applications on Kubernetes
Service Token
Accessing your secrets in a production or CI/CD environment using the Doppler CLI requires a Service Token to provide read-only access to a specific config via the DOPPLER_TOKEN
environment variable.
Installation
This method uses the Doppler CLI installed in your Docker image to inject secrets as environment variables into your application.
Dockerfile
The only required changes to an existing Dockerfile
is installing the CLI, then updating CMD
so the CLI will run your application process.
# Install Doppler CLI
RUN apt-get update && apt-get install -y apt-transport-https ca-certificates curl gnupg && \
curl -sLf --retry 3 --tlsv1.2 --proto "=https" 'https://packages.doppler.com/public/cli/gpg.DE2A7741A397C129.key' | apt-key add - && \
echo "deb https://packages.doppler.com/public/cli/deb/debian any-version main" | tee /etc/apt/sources.list.d/doppler-cli.list && \
apt-get update && \
apt-get -y install doppler
# Use the Doppler CLI to run your application
CMD ["doppler", "run", "--", "your-app-command"]
# Install Doppler CLI
RUN wget -q -t3 'https://packages.doppler.com/public/cli/rsa.8004D9FF50437357.key' -O /etc/apk/keys/[email protected] && \
echo 'https://packages.doppler.com/public/cli/alpine/any-version/main' | tee -a /etc/apk/repositories && \
apk add doppler
# Use the Doppler CLI to run your application
CMD ["doppler", "run", "--", "your-app-command"]
# Install Doppler CLI
RUN rpm --import 'https://packages.doppler.com/public/cli/gpg.DE2A7741A397C129.key' && \
curl -sLf --retry 3 --tlsv1.2 --proto "=https" 'https://packages.doppler.com/public/cli/config.rpm.txt' | tee /etc/yum.repos.d/doppler-cli.repo && \
yum update -y && \
yum install -y doppler
# Use the Doppler CLI to run your application
CMD ["doppler", "run", "--", "your-app-command"]
# Does not rely on package managers
# Option 1: Standard
RUN (curl -Ls --tlsv1.2 --proto "=https" --retry 3 https://cli.doppler.com/install.sh || wget -t 3 -qO- https://cli.doppler.com/install.sh) | sh
# Option 2: Signature Verification (GnuPG package required)
RUN (curl -Ls --tlsv1.2 --proto "=https" --retry 3 https://cli.doppler.com/install.sh || wget -t 3 -qO- https://cli.doppler.com/install.sh) | sh -s -- --verify-signature
# Use the Doppler CLI to run your application
CMD ["doppler", "run", "--", "your-app-command"]
Check out our Docker guide to learn more about using the Doppler CLI inside a container.
Kubernetes Secret
Next, open the Doppler dashboard and create a Service Token, copying the value and using it as the value of a new Kubernetes secret. This will be supplied to the container as the DOPPLER_TOKEN
environment variable.
kubectl create secret generic doppler-token --from-literal=DOPPLER_TOKEN="dp.st.prd.xxxx"
Deployment Spec
Now update your Deployment spec to use the DOPPLER_TOKEN
environment variable doppler-token
Kubernetes secret
apiVersion: apps/v1
kind: Deployment
...
spec:
containers:
- name: your-app
envFrom: # envFrom exposes `DOPPLER_TOKEN` value as an environment variable
- secretRef:
name: doppler-token
You can see a complete Dockerfile and Deployment spec from our Kubernetes examples repository.
Awesome Work!
Now you know how to fetch Doppler secrets in Kubernetes using the Doppler CLI. Keep reading to learn other ways of managing secrets in Kubernetes using Doppler.
Updated 4 months ago