Evgeniy
Oleksandr
попробуй указать путь к нему относительно контекста через фраг —env-file
Данила
Evgeniy
в доке же есть примеры похожие
по умолчанию переменныокружения доступны из .env который распологается рядом с docker-compose.yml
ты можешь попробовать использовать флаг и указать другой путь
Данила
Aleksey
Aleksey
Василий
Нет
тут сисадмины помогли. В среде старый докер был (v19), и образ поэтому не мог завестись. Сообщения об ошибках только всех с толку сбили.
Aleksey
Aleksey
Ну так от себятина
TK
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) ничего не привязывать, ибо они завтра могут поменятся, если контейнеры стартануть в другом порядке.
Нужно одному контейнеру разрешить, двум другим заблочить.
Konstantin
Limbend
Konstantin
и чем обусловленно желание не давать доступ контейнерам
Konstantin
я бы создал две сети, одна external, другая internal. интернал на всех 3ёх контейнерах и на одном который может обращаться к серверу, ему добавить ещё одну которая external
Limbend
Konstantin
Konstantin
Konstantin
Konstantin
потом при docker run image container_name указать ещё --network
Limbend
Konstantin
Oleksandr
Подскажите пожалуста, правильно ли я понимаю что когда передаешь переменные в докер контейнеры не имеет смысла указывать префикс указывающий название сервиса. Например нет смысла передавать URL_SHRTNR_ENVIRONMENT в контейнер, а можно передавать просто ENVIRONMENT и накаих конфликтов не будет потому что контейнеры изолированы друг от друга. Этот подход наверно применялся когда виртуализация происходила через виртуальные машины, а не через докер?
Konstantin
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
Всем привет. Можете подсказать, пожалуйста, как можно правильно разделить 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.
gaenkov
Виктор
gaenkov
Виктор
в случае с 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
gaenkov
Виктор
gaenkov
Evgeniy
Виктор
Evgeniy
у докера нет задач разделять параметры по разным средам
например у тебя есть сервис app который работает с бд mysql, redis, и имеет несколько oauth приложений (гугл яндекс), есть и s3 хранилище
вот под каждый параметр можно задать разное значение
а не создававать TYPE=staging|dev|prod и потом по имени этого сервиса уже грузить параметры <- это не очень путь
тогда имея сервисы и набор параметров, можно хранение делигировать в другое место например
Evgeniy
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"; тут тоже хз что делать
Dmitry
Дмитрий
import CalendarMonthOutlinedIcon from "@mui/icons-material/CalendarMonthOutlined"
уже давно npm i
Василий
Виктор
Хардкодить порты в докер-композ - это норм или плохая практика?
Alexander
Vladislav
Виктор
в .env лучше хранить их
Я понимаю, но уже запутался...
Я читал хорошие практики, у людей спрашивал, мне сказали, что .env файлы лучше разбивать для разных сервисов. Но эти файлы не увидит докер, если указывать через env_file.(
George
Лучшая практика не использовать #компост
George
George
Сам компост файл это тоже конфигурация
Виктор
George
Конфигурацию сплиттить на части надо, если у тебя есть аргументы за это - это же относится к выносу переменных в .env
George
Эм, а как?
А вот так :) деплой в кубер ;) а разрабы локально пусть страдают сами
Виктор
George
Срочно переобувайся в девопсы
George
Станешь самым важным и умным
Dan
3000кк/наносекунд будешь получать
George
Без смс и регистраций, ага
Witold
добрый день !
Вы знаете, как я могу полностью упаковать laravel в контейнер докера?
Вся документация, которую я прочитал, предполагает, что мне нужно создать дополнительные папки на сервере.
Evgeniy
Panic
Добрый день!
кто может рассказать про работу embedded dns ? можно в личку, можно тут
интеерсует подкапотная жизнь