George
Попробую, но попозже
Артём
Верно ли, что docker-compose не создаёт образы тех проектов, образы которых были созданы ранее, но в настоящий момент проекты не были изменены?
George
George
я вообще НЕ РЕКОМЕНДУЮ использовать докер компоуз для СБОРКИ образов, т.к. поведение не очень очевидное
George
он НЕ трекает изменение исходных файлов для сборки образа
George
поэтому то что попадет в тест - скорее всего СТАРЫЕ образы. Если вручную не напишешь docker-compose build или pull
Артём
эм. Можно по-русски?
"Compose caches the configuration used to create a container. When you restart a service that has not changed, Compose re-uses the existing containers. Re-using containers means that you can make changes to your environment very quickly."
Что понимается под измением контейнера?
George
это про другое
George
имеется в виду он обрабатывает изменения docker-compose.yml
George
и если есть изменения в конфигурации контейнера - он при up будет перезапущен
George
не более
Артём
George
это не скрипт. но в целом - да, верно
Артём
Благодарю!
L-dar
Привет! Подскажите как лучше настроить отправку почты, крутится докер с приложением на php нужно теперь отправлять почту. На самой машине настроил postfix, как мне теперь обращаться к нему из контейнера?
Andrey
Andrey
Не нужно обращаться на хостовую систему
Andrey
Если очень нужно через постфикс хотя это странно очень,ставь рядом контейнер с ним
Andrey
И обращайся к нему уже по имени.
L-dar
Andrey
В общем постфикс ставить рядом,есть готовый образ
George
George
пуляй в нормальный смтп - типа яндекса, гугла или Ко. Если есть свой - ок, можно в свой
RusaXXX
Подскажите что за код 1
The command '/bin/sh -c yarn global add @vue/cli' returned a non-zero code: 1
Аналогичный билд на другом компе работает отлично
inqfen
inqfen
где-то выше должен написать в чем конкретно
inqfen
эта 1 просто exit code процесса
RusaXXX
ашипка
а как узнать что за ошибка. Как то была проблема , связаннная с DNS. Решалась с помощью прописывания другого DNS.
inqfen
выше где-то должен быть вывод процесса
inqfen
если нету, то нужно каким-то ключом включить
inqfen
но yarn должен писать
RusaXXX
но yarn должен писать
An unexpected error occurred: "https://registry.yarnpkg.com/@vue%2fcli: getaddrinfo EAI_AGAIN registry.yarnpkg.com".
inqfen
Да, что-то с днс
inqfen
поставь гугловые
RusaXXX
поставь гугловые
чет не помогло. Подключился к vpn своей конторы - заработало
inqfen
Видимо ркн
Dmitry
Привет. Можете посоветовать, как лучше генерировать конфиги с конфиденциальными данными в Docker? Какие для этого есть best practices?
Sergey
𝚔𝚟𝚊𝚙𝚜
George
Потому что в волт нужно как-то сходить. По какому-то токену.
George
Это раз
George
Два: все равно все секреты будут доступны в памяти контейнера. Т.е. потенциальный рут на хосте, где докер контейнеры может просканить память и найти все секреты
Sergey
Sergey
было бы желание - если ты получил возможность читать память - то мало что поможет
Sergey
дальше вопрос рисков - насколько велик риск что у тебя дырочки такие которые позволяют произвольное чтение памяти
Sergey
для 90% ситуаций и env переменных докера хватает, как бы если у тебя злоумышлинник получил рутовыве права внутри контейнера то у тебя будет явно побольше проблем
George
George
Sergey
p.s. есть нюансы но все же память отдельных процессов изолирована, и дампить память просто так - это прям нужно жирные дырочки
George
Волт позволяет обеспечить:
1. Контроль за доступом к секретам
2. возможность пошарить секрет между несколькими потребителями
Sergey
env переменные в этом плане опаснее ибо их проще заэкспоузить экплуатируя уязвимости твоего приложения
George
Т.е. именно, что построить secrets lifecycle management
George
Sergey
Если есть рут, то приплыли
если есть рут - то да, приплыли. потому этот вариант надо рассматривать последним с точки зрения рисков (там по другому вопросы решаются)
Sergey
есть другие проблемы - представь что у тебя вротпресс какой в контейнере или еще какое мракобесие. Или недоразработчик оставил какую-то отладочную информацию. И прочее. И секреты ты в переменных окружения хранишь.
Если токен для волта там - то у тебя обычно доступ на внешку к апишке волта нету. Потому токен (который ты должен раз в недельку ротацию делать) экспоузить не так критично. А вот остальные секреты - это уже другое.
Ну и в целом я бы как первый пункт чеклиста делал бы "отрезать доступ с внешки в внутренним ресурсам типа базы"
Sergey
ну то есть к вопросу управления секретами стоит возвращаться когда ты уже знаешь как можно к ним подобраться.
Sergey
и какие риски если вдруг заэкспоузят пароль от твоей базы. Если помимо секретов ты и остальные вещи нормально делаешь - то риски от экспоуза таких данных низки
Sergey
а вот если у тебя там какие-нибудь секретные ключи для работы с... хз... секретный ключь от биткойн кошелька, токены от всяких сэндгридов/мэйлганов и прочее... все что можно заюзать отдельно и получить доступ из вне. тут надо уже запариваться с секретами.
Опять же, с точки зрения рисков (а тут риск эксптуатации уязвомисотей приложения выше чем доступ к контейнеру, при этом даже риск выполнениия произвольного кода не столь высок) надо смотреть что куда прятать и что куда ложить можно.
Sergey
а там дальше уже есть вопрос кому внутри команды можно видеть секреты, как их хранить (тут опять же волт, git crypt и прочее), как их пробрасывать и т.д. Это все уже отдельный вопрос и я полагаю что в основном это интересует @dmvw34 . Возможно я не прав но тогда вопрос составлен неверно
Dmitry
В данный момент меня интересует передача в контейнер данных подключения к БД и генерация конфига.
George
George
Anonymous
Привет.
Вопрос от почти новичка.
Вот есть гитлаб. Есть у него раннер на шелле.
На самом раннере установлен и движок докера и даже компоуз.
Есть пайплайн гитлаба, в котором он подключается к этому раннеру и пытается запустить команду docker build с тегом и путем. Но в логах неудачной джобы пишет, что не может найти путь к докерфайлу.
В гит-репозитории докерфайл лежит относительно gitlab-ci.yaml в папке /src/ui/Dockerfile.
Что-то как не пишу я строку с билдом, он все никак этот файл не видит.
Что я делаю не так? Или мне надо на раннер его копирнуть через cp?
George
- pwd
- ls -la
- cd ./src/ui
- docker build
George
Или
George
- docker build -f ./src/ui/Dockerfile ./src/ui
Andrey
я про докер файл
Andrey
в гите
Ильдар
George
George
Вообще нефиг корень проекта засорять
Anonymous
В общем решилось через две строчки.
Лол, но pwd мне подсказал, что не так.
Cp ./src/ui/Dockerfile .
Docker build -t ui .
Anonymous
А так подкаталогов, как и докерфайлов много. Они все отдельно, дабы не засорять корень(мне показалось это ок)
Nikolai
Подскажите пожалуйста, volume прокидываются во время билда образа или же во время старта контейнера?
George
во время старта контейнера
Nikolai
Andrey