Как использовать:
ONBUILD_VAR_LOCAL=onbuild-variable-content docker-compose -f docker-compose.build.yml build --no-cache
Пример вывода:
Building sample
Step 1/6 : FROM ubuntu
---> 4e5021d210f6
Step 2/6 : ARG ONBUILD_VARIABLE
---> Running in 828f68f1690b
Removing intermediate container 828f68f1690b
---> d8ec63d32434
Step 3/6 : RUN env
---> Running in 6f81badb6c9f
HOSTNAME=6f81badb6c9f
HOME=/root
ONBUILD_VARIABLE=onbuild-variable-content
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
Removing intermediate container 6f81badb6c9f
---> 5fd74f3487f5
Step 4/6 : RUN echo "ONBUILD=${ONBUILD_VARIABLE}"
---> Running in bcf51eb277e1
ONBUILD=onbuild-variable-content
Removing intermediate container bcf51eb277e1
---> 22f5b89c148f
Step 5/6 : RUN echo "${ONBUILD_VARIABLE}" > /tmp/build-var
---> Running in aa28c0a516e0
Removing intermediate container aa28c0a516e0
---> 9e2e14d00a24
Step 6/6 : CMD ["bash", "-c", "echo '----[ Env ] ----' && env | grep RUNTIME && echo '----[ Build variable ]----' && cat /tmp/build-var"]
---> Running in 13a3fd23e405
Вот эта строка: ONBUILD_VARIABLE=onbuild-variable-content
как бы главная, она означает, что переменная приползла в докер-композ
Все, мы построили образ.
Запускаем с настройкой:
RUNTIME_VAR_LOCAL=runtime-variable-content docker-compose -f docker-compose.run.yml up
На выходе имеем:
sample-image | ----[ Env ] ----
sample-image | RUNTIME_VARIABLE=runtime-variable-content
sample-image | ----[ Build variable ]----
sample-image | onbuild-variable-content
Создаем `build.env'
ONBUILD_VAR_LOCAL=onbuild-separate
Запускаем
cp build.env .env
docker-compose -f docker-compose.build.yml build
rm -f .env
Создаем `run.env'
RUNTIME_VAR_LOCAL=runtime-separate
cp run.env .env
docker-compose -f docker-compose.run.yml up
rm -f .env
docker-compose -f docker-compose.run-envfile.yml up