> no, web-app/.env already will have these variables. Do not specify them again
● You're absolutely right! The env_file: - apps/web-app/.env already handles it. Let me remove the redundant environment section:
В docker compose + Dockerfile есть штук 5 способов передать env variables для приложения.
Мне удобен подход, когда мы храним весь файл .env в одной переменной в github/gitlab - т. е. просто создаем новую переменную WEB_APP_ENV_FILE и кладем туда контент .env.
Далее, во время ci/cd, берем значения оттуда, создаем файл .env рядом с сорсами приложения и билдим.
В compose.yaml я указываю путь к этому файлу через
web-app:
build:
context: .
dockerfile: ./apps/web-app/Dockerfile
env_file:
apps/web-app/.envТаким образом, env variables из .env сразу доступны внутри Dockerfile и не нужно никаких лишних телодвижений
Проблема в том, что нейронки кто-то научил делать по-другому - указывать ARGS внутри Dockerfile и перечислять там КАЖДУЮ переменную из .env файла, что ведет к тому, что у нас теперь более одного source of truth в проекте и управлять переменными теперь надо не только из .env файлика, но и из Dockerfile.
И вот каждый раз приходится по 3-4 раза объяснять как нужно сделать, но они всё равно пытаются сделать по-своему. Что sonnet, что codex. Это какой то ужас!
Они игнорируют compose.yaml файл, который если почитать, то станет очевидно, как мы работаем с переменными в проекте, но им пофиг.
Вот тут теперь становится понятна логика свидетелей T9 - видимо они пишут на непопулярных языках, примеров которых было мало в интернете, по сравнению с TS/Python))