Oleksandr
попробуй указать путь к нему относительно контекста через фраг —env-file
Данила
а с чего ты решил что он должен видеть его ?
в доке же есть примеры похожие
Evgeniy
в доке же есть примеры похожие
по умолчанию переменныокружения доступны из .env который распологается рядом с docker-compose.yml ты можешь попробовать использовать флаг и указать другой путь
Василий
Если что пиши на прошлой неделе переносили могу с 3.4 на 6
привет. Не ловили проблему с exit code 51? Что-то Монге в путях не хватает. mongod —fork ... отваливается с 139ой ошибкой. (попытка залезть в недоступную память)
Василий
Нет
тут сисадмины помогли. В среде старый докер был (v19), и образ поэтому не мог завестись. Сообщения об ошибках только всех с толку сбили.
Aleksey
Ну так от себятина
Limbend
Подскажите как определенным контейнерам можно запретить доступ к определенному ip. Поковырял iptables на машине, что хостит контейнеры. Методом тыка вывел вот такое правило: iptables -I DOCKER-USER -p tcp -d 192.168.10.0/24 -s 172.17.0.4,172.17.0.5 -j DROP Однако из моей практики лучше к ip внутренний сети докера (172.17.0.4) ничего не привязывать, ибо они завтра могут поменятся, если контейнеры стартануть в другом порядке. Нужно одному контейнеру разрешить, двум другим заблочить.
Limbend
как запускаете и почему именно так ?
Не совсем понял вопроса.
Konstantin
Не совсем понял вопроса.
ну как контейнеры запускаете ? swarm/ docker run/ compose
Konstantin
и чем обусловленно желание не давать доступ контейнерам
Limbend
и чем обусловленно желание не давать доступ контейнерам
Запущено все сейчас с docker run. А запретить хочется некоторым контейнерам доступ к домашней сети, что по wg подключена к серверу с докером.
Konstantin
я бы создал две сети, одна external, другая internal. интернал на всех 3ёх контейнерах и на одном который может обращаться к серверу, ему добавить ещё одну которая external
Limbend
ну, создать сеть и запретить ей доступ к сети wg
Да я даже это не знаю как сделать, все сети что есть у докера он поднимал сам в авто режиме. Ушел гуглить.
Konstantin
потом при docker run image container_name указать ещё --network
Limbend
ну, создать сеть и запретить ей доступ к сети wg
А блокируем доступ новой сети к wg через iptables?
Oleksandr
Подскажите пожалуста, правильно ли я понимаю что когда передаешь переменные в докер контейнеры не имеет смысла указывать префикс указывающий название сервиса. Например нет смысла передавать URL_SHRTNR_ENVIRONMENT в контейнер, а можно передавать просто ENVIRONMENT и накаих конфликтов не будет потому что контейнеры изолированы друг от друга. Этот подход наверно применялся когда виртуализация происходила через виртуальные машины, а не через докер?
Konstantin
А уже внутрь контейнера ты передаешь своё значение в переменную окружения в виде environment: ENV1=MYSECRET
Konstantin
Где env1 это переменная как раз таки у тебя будет внутри контейнера, назвать её можешь как угодно, главное чтобы оно не конфликтовало с другими переменными этого же контейнера иначе оно переопределится
Oleksandr
Спасибо
Dan
Спамеры больше нас не побеспокоят
Dan
:3
Виктор
Всем привет. Можете подсказать, пожалуйста, как можно правильно разделить dockerfile & docker-compose & env_files для разных сред? Я несколько запутался в том, как это должно выглядеть без особых костылей: Например, у меня 3 разных билда: dev, test, prod и 3 разных докер-композ файла. Докер-композ файл тоже свой для разных сред (хоть и похожи между собой сильно). Мне, получается, нужно что-то вроде такой структуры делать? ├───deploy │ ├───dev │ │ dev.dockerfile │ │ docker-compose.dev.yml │ │ │ ├───prod │ │ docker-compose.prod.yml │ │ prod.dockerfile │ │ │ └───test │ docker-compose.test.yml │ test.dockerfile │ └───environments common.env service1.env service2.env
gaenkov
Ну а с зависимостями как быть? Они же разные.
Для дев окружения (то что используется на машине разработчика) допустимо иметь девелоперский образ, обвешанный дев зависимостями. В теории можно его же использовать на CI для прогона автоматизированных тестов. На test и prod выкатывать production-версию образа. Использовать multistage build. Вначале собирается дев образ со всеми дев зависимостями, затем на его основе собирается production образ, в который попадает только собранное приложение и прод зависимости.
gaenkov
Ок, согласен. А насчет компоуз-файлов тогда как?
Свой compose на каждое окружение - норм. Выносить отдельно .env - имхо излишне, там один к одному с окружениями, можно все вшивать в compose. Файл common.env - в печь: если эти параметры не отличаются на разных окружениях то это должно быть захардкожено в само приложение, если могут в будущем отличаться - должно быть продублировано во всех compose.
Виктор
в случае с db_user лучше продублировать
Немножко запутался. Т.е. у меня, выходит, должна быть такая структура: ├───deploy │ ├───dev │ │ docker-compose.dev.yml │ │ │ ├───prod │ │ docker-compose.prod.yml │ │ │ └───test │ docker-compose.test.yml │ ├───environments │ service1.env │ service2.env │ └───multistage.dockerfile
Виктор
multistage.dockerfile docker-compose.dev.yml docker-compose.test.yml docker-compose.prod.yml либо multistage.dockerfile docker-compose.yml dev.env test.env prod.env
У меня нельзя юзать один докер композ, там разный состав сервисов.( А разные env файлы для разных сервисов. Т.е. в условном сеовисе1 юзается енв файл с переменными только для сервиса1 и т.п.(
gaenkov
У меня нельзя юзать один докер композ, там разный состав сервисов.( А разные env файлы для разных сервисов. Т.е. в условном сеовисе1 юзается енв файл с переменными только для сервиса1 и т.п.(
Ну тогда первый вариант. Вся конфигурация окружения (сервисы и их настройки) в одном docker-compose файле этого окружения. И не нужно будет ломать голову сопоставлять определенный сервис из определенного docker-compose с определенным .env
Виктор
а, типа чтобы секреты не коммитить
Да. Ну и на всякий случай порты некоторые и т.п.
Evgeniy
у докера нет задач разделять параметры по разным средам
например у тебя есть сервис app который работает с бд mysql, redis, и имеет несколько oauth приложений (гугл яндекс), есть и s3 хранилище вот под каждый параметр можно задать разное значение а не создававать TYPE=staging|dev|prod и потом по имени этого сервиса уже грузить параметры <- это не очень путь тогда имея сервисы и набор параметров, можно хранение делигировать в другое место например
Evgeniy
докер это также не инструмент деплоя чтобы хранить в нем prod | staging и тд мой опыт говорит что есть 2 вида конфигураций 1. Для разработки 2. Все остальные (prod, staging, test, alfa,beta и тд все возможные названия) вторая конфигурация отличается (prod от staging_ лишь значением параметров. При этом надо стараться билдить ОДИН раз и результат этого билда раскатывать на staging тестирование и если все ок ЭТОТ результат надо раскатывать и на прод, просто меняя параметры, с подключениями. ну а первая конфигурация не всегда нужна, но обычно упрощает жизнь разработчикам
Evgeniy
ну и последний совет это стараться разделять сервисы между собой - это конечно холиварный вариант и ИНОГДА monorepo подход бывает удобней, но вынося отдельно сервисы их проще менеджерить например зачем фронтам и бэку иметь общий репозиторий с кодом ? гораздо лучше чтобы у всех у них был свой репозиторий с кодом, НО если бэку нужен фронтенд проверить бэк он может использовать готовый образ последней версии (или НУЖНОЙ версии) если захочет у этого подхода конечно же существуют и свои минусы
Evgeniy
все сказанное выше это имхо и личный опыт, который может быть полезен чтобы не танцевать на граблях остальные вещи это надо уже более конкретно рассматривать.
Дмитрий
Здравствуйте, помогитее пожалуйста, у меня докер пишет, что не найден модуль на эти импорты, как мне исправить? import CalendarMonthOutlinedIcon from "@mui/icons-material/CalendarMonthOutlined"; (пиздец, это же просто иконка, у меня таких 50 штук, но на эту ругается) import { DayPicker } from "react-day-picker"; тут тоже хз что делать
Дмитрий
import CalendarMonthOutlinedIcon from "@mui/icons-material/CalendarMonthOutlined" уже давно npm i
Виктор
Хардкодить порты в докер-композ - это норм или плохая практика?
Виктор
в .env лучше хранить их
Я понимаю, но уже запутался... Я читал хорошие практики, у людей спрашивал, мне сказали, что .env файлы лучше разбивать для разных сервисов. Но эти файлы не увидит докер, если указывать через env_file.(
George
Лучшая практика не использовать #компост
George
Сам компост файл это тоже конфигурация
George
Конфигурацию сплиттить на части надо, если у тебя есть аргументы за это - это же относится к выносу переменных в .env
George
Эм, а как?
А вот так :) деплой в кубер ;) а разрабы локально пусть страдают сами
George
Срочно переобувайся в девопсы
George
Станешь самым важным и умным
Dan
3000кк/наносекунд будешь получать
George
Без смс и регистраций, ага
Witold
добрый день ! Вы знаете, как я могу полностью упаковать laravel в контейнер докера? Вся документация, которую я прочитал, предполагает, что мне нужно создать дополнительные папки на сервере.
Panic
Добрый день! кто может рассказать про работу embedded dns ? можно в личку, можно тут интеерсует подкапотная жизнь