Sergey
С этим все плохо
Roman
Приветствую Только хочу юзать докер, а то заелся каждый раз ставить LAMP на домашнюю машыну что б кодить на php И вот нашел докер: https://github.com/richarvey/nginx-php-fpm сделал pull , потом run все запустилось, но не пойму где внутренности? где хранится сам докер? где я могу менять параметры и тд?
Sergey
До совсем плохо
Александр
Всем привет)
Alex
ребят, почему у меня может не найти бинарь который есть в PATH, но при этом его находит если запускать через docker exec или если в docker-compose указать command?
Alex
т.е прописал в Dockerfile CMD 'bundle exec rails s' Но он пишет что не может найти (всю эту строчку)
Alex
но при этом в docker-compose run все замечательно, а если прописать command в docker-compose.yml то docker-compose up тоже замечательно работает
Александр
Стоит ли засовывать все файлы проекта и его зависимости в контейнер? Вариант 1: При это чаще всего на проекте много разных контейнеров. В этом случаем придётся их пихать во все контейнеры. Более того, файл, созданный в одном из контейнеров, будет недоступен в другом. Вариант 2: прокидывать через volume. Но при этом, при деплое приложения будет простой, т.к. все зависимости могут долго скачиваться/обновляться Есть другие варианты или мнения?
Alex
а почему у тебя несколко контейнеров на одной кодовой базе?
Alex
одна и таже бизнеслогика?
Александр
а почему у тебя несколко контейнеров на одной кодовой базе?
Например, php-fpm с приложением и отложенные задания
Alex
а, ну это нормальная практика
Александр
а, ну это нормальная практика
кодовая база -то одна, контейнеры разные
Alex
это нормальная практика
Александр
Alex
когда у тебя несколько контейнеров из одной кодовой базы
Alex
как раз твой случай
Александр
И по этой практике файлы кладутся в контейнер или прокидываются?)
Sun
Можешь пример скинуть?
Мм, прямо сейчас не смогу. Суть в том что ты собираешь базовый контейнер, а во всех остальных ставишь From на него
Александр
volumes_from или в докерфайле FROM?
Alex
скорее второе.
Александр
Как тогда деплоить без простоя? симлинки, по старинке?
Alex
а причем тут симлинки?
Alex
как обычно ты деплоишь через докер?
Александр
ну, скачать зависимости в левую директорию, потом поменять симлинки на папку, которая прокинута
Александр
docker pull/docker-compose up -d
Alex
зачем тебе зависимости на продакшене выносить в volume?
Alex
собирай базовый контейнер с кодовой базой, дальше FROM в подобразах
Alex
я правда такую схему не городил, но выше пишут что все ок.
Александр
Но тогда если приложение создаст файл, например, xls, то в nginx он не появится
Alex
по пути где приложение создает файл - делается volume
Alex
например у меня в рельсах это public/uploads. И он volume
Александр
а, ну да
Александр
Короче, пихать всё, что нужно для приложения, в контейнер - это норм практика, если я правильно понял?
Alex
все что immutable от старта до финиша
Alex
пути куда ложится стейт (upload'ы например) - в volume
Александр
спасибо)
Alex
да незачто ...
Александр
Еще вопрос - есть смысл в бесправном юзере в контейнере?
Alex
делать наоборот как то странно. Деплоить приложение через volume это тоже антипаттерн
Alex
я не профессионал, но читал что у докера были какие то секьюрити проблемы. Если юзер не рут то шанс на экслойпт понижается в разы имхо
Alex
тем более на публичное приложение.
Александр
Вот с ним у меня возникли проблемы с правами. Либо от рута файлы создаются на хостовой тачке, либо у него нет прав записать в домашнюю директорию
Andrew Kiselev
а как лучше сделать несколько поддоменов из одной кодовой базы? Типа https://api.domain.com https://vk.domain.com
Alex
ну и если процесс запущен не от рута, то и файлы создаются не от рута
Alex
сделай в конце chown на все, как костыльчик
Александр
Ну костыльчик я уже сделал, теперь бы разобраться, как правильно)
Andrew Kiselev
это... это ж nginx просто настроить
Спасибо. Вот тут еще одну штуку нашел https://github.com/containous/traefik
Andrew Kiselev
а чем оно лучше nginx?
хз. Пытаюсь разобраться, хотя с nginx у меня опыта нет
Alex
хз. Пытаюсь разобраться, хотя с nginx у меня опыта нет
ну nginx дефакто стандарт в наши дни.
Alex
С ним достаточно один раз разобраться. Типовые конфигурации там не сложные.
Andrew Kiselev
ну nginx дефакто стандарт в наши дни.
значит не буду тратить время, займусь конфигурацией nginx
Александр
Каждый раз с нуля?
Alex
Каждый раз с нуля?
а как ты предлагаешь это делать?
Александр
Есть флаг —cache-from из контейнера кеш брать
Sun
Пол часа на сборку... у нас за это время сборка и 1500 тестов проходит. Самолеты делаешь что ли)
Там много чего с сорцов собирается, плюс руби, плюс ещё всякое барахло в 10+ разных контейнеров.
Александр
Если докерфайл не сильно изменился
Александр
А, и еще хотел узнать - как на счет конфигурационных файлов? Где их хранить? В волюме, прокидывать?
Alex
в ENV'ах
Александр
И как эти енвы запихивать в конфиги приложений?
Sun
так через $VAR
Sun
у меня .env в тридцать строк длиной
Sergey
Кладите конфиг в консул или етсд, и при старте его вытаскивайте
Sergey
Можно своё приложение вообще научить брать данные оттуда
Sergey
А при старте только передавать ему где консул и что взять
Alex
почему не получается сделать container: build: args: USER_ID: $UID ?