Remove sensitive information from environment variables in postgres docker container
use args without values to build the image in your Dockerfile
:
ARG PASSWORD
and build it using
export PASSWORD="MYPASS" && docker build ...
in this way the ARG
is not there when running the container
here is a complete example:
dockerfile
:
FROM postgres:10.0-alpine
ARG my_user
ARG my_pass
Compose
:
version: "3"
services:
db:
build:
context: .
args:
- my_user
- my_pass
environment:
- POSTGRES_USER=${my_user}
- POSTGRES_PASSWORD=${my_pass}
- POSTGRES_DB=db
run it:
export my_user=test && export my_pass=test1cd && docker-compose up -d --build
now if you login to the container
and try echo $my_pass
you get an empty string
result :
docker exec -ti 3b631d907153 bash
bash-4.3# psql -U test db
psql (10.0)
Type "help" for help.
db=#