Анатолий
можно создать бридж docker network create --driver=bridge --subnet="172.18.0.0/24" --gateway="172.18.0.1" -o "com.docker.network.bridge.name=br1" br1 далее уже в эту сеть контейнеры docker create --restart=always --net br1 --ip 172.18.0.3 --name test
Анатолий
вериантов вообщем много
Анатолий
задать контейнеру хостнейм а на хост машине можно установить к примеру dnsmasq и там описать сеть 172.18.0.0/24 тогда в arp табличке будут и контейнеры присудствовать и можно пинговать их по имени уже как вариант.
Nikita
всё-таки, получилось решить задачу вот таким образом: services: app: depends_on: - db env_file: .env environment: - POSTGRES_HOST=db db: env_file: .env если кто знает более изящное решение - буду рад узнать его тоже.
Удалите env_file. Он здесь не нужен, т.к. лежит в директории с .yml. Также обязательно в environment прописывайте параметры указанные .env, так как автоматически они в контейнер не прокидываются.
Владислав
тогда в чём смысл .env файла, если нужно прописывать переменные в environment?
Владислав
это приведёт к дублированию кода, от которого я хочу избавиться.
Bohdan
суть env файла - в том, чтобы предоставить переменные окружения в виде файла, что для разработки удобнее
Bohdan
а переменных в окружении может быть гораздо больше, и прокидывать их все в контейнер - зло
Nikita
тогда в чём смысл .env файла, если нужно прописывать переменные в environment?
Можно для каждого сервиса сделать отдельную папку, положить туда докерфайл и .env для этого сервиса и подключить в докер композе
Владислав
и прокидывать их все в контейнер - зло я пока не нашёл, как сделать иначе, увы
Nikita
Это тот код, который вы привели выше?
Владислав
показать то, чего уже нет? =) ладно, сейчас коммиты найду
Bohdan
в окружении, в котором запускается контейнер, переменных гораздо больше, чем нужно контейнеру к примеру, зачем контейнеру знать о PATH хоста?
Bohdan
потому нужно явно указывать, какие переменные пробрасывать в какой контейнер
Владислав
совершенно не за чем
Владислав
но так уж вышло, в моём случае, что у меня для обоих контейнеров переменные совпадают
Bohdan
а .env файл - это dev-представление переменных окружения он не должен быть в репе, т.к. он нужен только для dev (в репу можно класть .env.dist с примером заполнения) а в прод-окружениях эти же переменные должны быть реальными переменными окружения
Владислав
Покажите
version: '3' services: app: build: docker/app depends_on: - db env_file: docker/app/local.env volumes: - .:/var/www/apartments networks: - backend db: build: docker/db env_file: docker/db/local.env networks: - backend networks: backend: было так
Bohdan
хм, насколько вижу - env_file должен по умолчанию прокидываться, нет?
Bohdan
https://docs.docker.com/compose/environment-variables/#the-env_file-configuration-option
Bohdan
имею ввиду его содержание
Владислав
Ну вот, осталось только в каждом сервисе написать, например, environments: - POSTGRES_DB=${POSTGRES_DB}
зачем, когда у меня в local.env уже хранятся разные значения?
Владислав
Владислав
даже скрины кидал
Nikita
зачем, когда у меня в local.env уже хранятся разные значения?
Вы хотите, чтобы из .env файла переменные автоматом прокидывались в контейнер?
Владислав
собирал на выходных несколько раз контейнер, но не получал нужного результата
Nikita
Это плохое решение
Nikita
Все нужно явно указывать
Владислав
ну, всё равно не работает..
Владислав
по крайней мере, у меня
Bohdan
еще раз
Nikita
Покажите как прописываете
Bohdan
env переменные для сборки и для запуска - это разные env переменные
Nikita
.env и .yml файлы нужны
Владислав
services: app: depends_on: - db # env_file: .env environment: - POSTGRES_HOST=db db: # env_file: .env
Bohdan
и Dockerflie, если уж "не работает" связано со сборкой контейнера, а не с запуском
Nikita
Покажите полностью .yml
Владислав
Nikita
Dockerfile покажите
Nikita
Инфы мало
Bohdan
еще раз в чем проблема?
Nikita
+
Bohdan
"не собирается" или "не запускается" или "не работает"?
Владислав
проблема не актуальна в принципе. я не знаю, зачем вообще было тему поднимать.
Владислав
суть такова, что если не указать явно файл .env в композе, то переменные окружения не подгрузятся.
Владислав
всё, в этом проблема.
Bohdan
не указать через env_file и при этом не прописывать environment?
Владислав
services: app: depends_on: - db # env_file: .env environment: - POSTGRES_HOST=db db: # env_file: .env
Владислав
скрины могу переслать ещё
Владислав
если не укзывать env_file явно, то у меня отображаются только те переменные, которые указаны в директиве environment
Bohdan
ну собственно это то, о чем я кидал ссылку на доку
Bohdan
если указан env_file - все переменные из него будут в контейенре
Владислав
а если не указать явно, я думал, что должен браться .env, что лежит в этом же каталоге с композом
Владислав
видимо, я доку неверно понял
Nikita
Да
Владислав
Да
не берётся, значит. у меня, по крайней мере
Nikita
И указать надо в environments переменные
Владислав
несколько раз пересобирал
Nikita
Обязательно
Владислав
И указать надо в environments переменные
тогда смысл файла теряется
Nikita
Нет
Bohdan
а если не указать явно, я думал, что должен браться .env, что лежит в этом же каталоге с композом
а если не указать явно - то .env возьмется как источник переменных окружения для композа, но пробрасываться переменные не будут
Bohdan
нет, не теряется, т.к. чем более явно все прописано - тем лучше
Владислав
я имею ввиду, зачем мне и в файле указывать переменные и в environment?
Владислав
если они те же самые будут, например
Nikita
а, вот в чём дело.
Почитайте документацию, там написано все
Bohdan
в данном конкретном случае они, возможно, одинаковые но у меня с десяток разных контейнеров бегает ,и мне нет смысла иметь везде все переменные, потому я прокидываю все вручную
Александр
не берётся, значит. у меня, по крайней мере
.env нужен для docker-compose.yml, если нужно прокинуть в контейнер, нужно явно это прописывать
Владислав
понял. но мне это не было очевидно. очень странная логика. почитаю ещё об этом.
Владислав
файл как бы берётся, но переменных нет.
-
Добрый день. Кто то занимался интеграцией pre-commit с докером? У меня веб приложение, разбитое на сервисы, фронт проверяет webpack динамически, а бэк, питон, hook prospector на pre-commit. Сейчас pre-commit я поставил глобально в систему и все работает.