Anonymous
заказчики показываютчто нужна
Отказывается от Езернета
Это тож старая технология
DemDev
Добрый день. Запускаю свой сервис в докер контейнере и добавил в функциональность сервиса удаление одной папки за собой. Но контейнер падает с ошибкой: "Error: EACCES: permission denied, rmdir './data'" Как дать права доступа на удаление папки или проблема не в этом?
Анатолий
ты её маунтил? эту папку ./data
DemDev
ты её маунтил? эту папку ./data
да RUN mkdir -p /app/data && \ chown -R nobody /app/data VOLUME ["/app/data"]
Анатолий
грубо говоря если она с хоста или с другого контейнера - не удаляй её
Анатолий
ты её определил в volume..
DemDev
просто сейчас мне понадобилось добавить в сервис одну функциональность, которая удаляет .data папку, а сервис в докере падает и не позволяет это сделать
DemDev
ты её определил в volume..
убрать её из volume и всё?
Анатолий
не знаю. попробуй. volume вообще декларативная вещь.. реальный бинд или маунт во время docker run происходит
DemDev
не знаю. попробуй. volume вообще декларативная вещь.. реальный бинд или маунт во время docker run происходит
а я этот volume вообще брал из примера в интернете, может он и не нужен что он вообще дает? Если уберу этот volume вообще, то что изменится?
Анатолий
https://docs.docker.com/engine/reference/builder/
Nikolay
Всем привет. У меня вопрос про организации CI и CD. Допустим вы пишите вебприложение. Разделяете на stage и production инфраструктуру. Как вы храните настройки подключения к БД, конфигурации в зависимости от окружения (например, тот же robots.txt для прода и для тестового разные, файлы с подключением к БД также разные). Потому что такие данные просто хранить в VCS вроде как нельзя, но при сборке того же образа пробрасывать в сборку нужно
Artem
пиши приложение которое может читать параметры из переменных окружения
Artem
тогда будешь передавать все секурные данные при старте
Nikolay
Справедливо
Nikolay
А если есть тот же gitlab сохранять их в нем и прокидывать уже при сборке с помощью CI?
Artem
ну это не исключает первый вариант
Artem
если допустимо хранить в переменных гитлаба, то пожалуйста
Artem
просто тогда эти данные будут вшиты в имаджи
Nikolay
Получается что не обязательно, просто при сборке из гитлаба будут подставляется в перемиенные окружения сборки образа
Nikolay
Ну т.е. в целом примерно как-то так вот все и делают?
Artem
так они нужны только на момент сборки или для работы приложения?
Artem
Ну т.е. в целом примерно как-то так вот все и делают?
если только первое, то все верно, через переменные гитлаба на момент сборки.
Artem
Так мб лучше директории нужные прокинуть и хот релоад добавить в проект
Ну это не ко мне вопрос, я напрямую с контейнерами работаю =)
Nikolay
Нужно например прокинуть знаяения для подключения БД, номера портов, на котором будет работать приложение, да и в принципе все
Nikolay
Он тоже подходит в качестве примера
Nikolay
в гите хранить все версии?
Nikolay
для теста и прода
Nikolay
Опять же нужен будет скрипт, которые при разворачивании копирует .prod.env в просто .env
Artem
так зачем копировать, если можно указывать конкретный env файл
Andrey
Nikolay
Ага
Nikolay
Просто еще хочется оградить просто разрабов от конфигов продакшен сервера
Nikolay
Или у кого какая практика на этот счет? В целом все кто работает на проекте имеет доступ к проду?
Sergey
никогда не юзай env файлы в проде
Sergey
(но если очень хочется и лень делать нормально то можно)
Sergey
да что там в проде - кроме как локально лучше вообще env файлы не юзать
Nikolay
вот хочу накрутить парочку переменных да к бд подключиться, в репе само собой все это хранить нельзя
Nikolay
Сейчас еще получается, что и env в репе не оставить
Sergey
тут два момента: - env переменные прокидываем при деплое, то есть в моем случае например переменные окружения задаются дженкинсом при разворачивании контейнеров на серваке. Такая же примерно стратегия при работе с кубером. - все пароли и токены по хорошему лучше хэндлить через docker secrets (или кубернетисовые)
Анатолий
Сейчас еще получается, что и env в репе не оставить
если ты оставишь ENV в репе - нафига тогда он? мог бы и напрямую вписать все пароли, ключи
Sergey
Сейчас еще получается, что и env в репе не оставить
дефолтные для локальной разработки которые можно палить среди разработчиков всех мастей - можно хранить в репе
Sergey
но тут тоже нюанс - убедись что у тебя эти "дефолтные" никогда не заюзаются при деплое
Anonymous
Воспользуйся доп конфигами
Sergey
а то потом можно ловить очень интересные проблемы
Sergey
(и да, я тут делаю допущение что верить никому нельзя и криворуких кто обновил .env но не обновил настройки в менеджере секретов каком больше чем остальных)
Sergey
я сейчас просто дефолтные значения прописываю в docker-compose файликах которые нужны только для локальной разработки
Sergey
но можно по разному делать
Nikolay
Ооок, таки кажется вектор приобретен
Nikolay
Спасибо)
Sergey
но справедливости ради - у меня есть репозитории где лежат .env и все как у всех просто потому что мне лень)
Oleh
и где же там можно посмотреть фс контейнера?
ls -la /var/lib/docker/overlay2/03d8aa4688b9a62a850689984430662d0c2fe4cced080efc4887c7085ae07367/diff/ например
Artem
так это не фс контейнера
Oleh
Artem
из пути непонятно?
Artem
Запусти любой новый контейнер и попробуй привести листинг его корня командой аналогично выше
Michael
годно!!!
Oleh
из пути непонятно?
А что тебе из пути понятно? Что это по-твоему?
Artem
Sergey
ну так объясни что не так)
Sergey
я уверен что "файловую систему" по пути которую указал автор нельзя глянуть так как это дифы слоев
Sergey
и там все чуть сложнее
Sergey
но я хз, потому можешь мне рассказать)
Artem
именно
Artem
он там ничего не увидит если контейнер не собирался на этом хосте
Artem
да и при сборке он увидит только тот самый DIFF, но не то что было до него
Artem
так что я хз как товарищ выше ls-ом собрался лазить по фс контейнеров с хоста
Bogdan
виндузятники должны страдать) Винда только для игор нужна 😊
Поставил линукс. всё сразу работает как надо) без проблем)
Artem
Bogdan
без блять кучи гемора) оно просто законнектилось к IDE, просто начало работать сразу без каких-либо проблем)
Oleh
он там ничего не увидит если контейнер не собирался на этом хосте
если контейнер поднят на "этом" хосте, ты всегда можешь получить доступ к его фс через /proc/$PID/root