А что делать что-то подобное в вашем Dockerfile
:
ARG DB_NAME
ENV DB_NAME=${DB_NAME} PGDATABASE=${DB_NAME} ...
Тест
$ cat Dockerfile
FROM alpine:3.4
ARG DB_NAME
ENV DB_NAME=${DB_NAME} PGDATABASE=${DB_NAME}
RUN env
Compose File Version 2 или выше!
$ cat docker-compose.yml
version: '3' #'2' should work as well
services:
docker-arg-env:
build:
context: .
args:
- DB_NAME
command: env
$ cat .env
DB_NAME=world
$ docker-compose build
Building docker-arg-env
Step 1/4 : FROM alpine:3.4
---> 0766572b4bac
Step 2/4 : ARG DB_NAME
---> Running in a56be8426dd5
---> 4b1009ba9fad
Removing intermediate container a56be8426dd5
Step 3/4 : ENV DB_NAME ${DB_NAME} PGDATABASE ${DB_NAME}
---> Running in 5bbdd40e640e
---> 593105981a2a
Removing intermediate container 5bbdd40e640e
Step 4/4 : RUN env
---> Running in dadf204c7497
HOSTNAME=26ba10d264c2
SHLVL=1
HOME=/root
PGDATABASE=world
DB_NAME=world
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
---> 9632ee1e0e37
Removing intermediate container dadf204c7497
Successfully built 9632ee1e0e37
$ docker-compose up
Creating network "dockerargenv_default" with the default driver
Creating dockerargenv_docker-arg-env_1
Attaching to dockerargenv_docker-arg-env_1
docker-arg-env_1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
docker-arg-env_1 | HOSTNAME=5a6b51f4ecc7
docker-arg-env_1 | DB_NAME=world
docker-arg-env_1 | PGDATABASE=world
docker-arg-env_1 | HOME=/root
Как вы можете видеть, PG_NAME и PGDATABASE установлены во время сборки времени и времени выполнения.
Без Compose:
docker build --build-arg DB_NAME=world .
и docker run docker-arg-env:latest env
тот же результат.
Update
Если вы не можете (или не хотите) модифицировать Dockerfile попробовать что-то вроде этого:
$ cat .env
hello=world
$ cat docker-compose.yml
version: '2'
services:
app:
environment:
- bar=${hello}
- foo=${hello}
image: someimage
$ docker-compose config
version: '2'
services:
app:
environment:
- bar=world
- foo=world
image: someimage
См : https://docs.docker.com/compose/environment-variables/#the-env-file
Вы пробовали? К сожалению, это не работает на меня –
У меня сейчас ;-) Пример включен в ответ. – Martin
О, я совсем забыл, что вы использовали 'docker-compose build'. Должен был прочитать вопрос еще раз. – Martin