Yavir
может кто подскажет, как лучше сделать
Dima
Добрый день всем. Такой вопрос, запускаю docker-compose php-fpm и nginx. У каждого сервиса описана volume для исходников проекта. В Dockerfile php проекта делаю установку composer install. Но т.к в docker-compose я описал volume, после команды up/build все зависиомсти удаляются. Как решаете эту особенность?
Anonymous
лично не тестил
У меня в CI xthtp exec это делаеться
Yavir
по CI не подскажу, руки не доходили(
Yavir
или в личку напишите
Yavir
файлы гляну, может что подскажу
Anonymous
да
nginx: image: nginx:1.16.1-alpine # command: ["nginx", "-g", "daemon off;", "nginx", "-s", "reload" ] # command: [ nginx", "-s", "reload" ] command: nginx -g daemon "off"; nginx -s reload restart: always # volumes: # - ./nginx.conf:/etc/nginx/nginx.conf:ro ports: - "2ad0:80" Вот такие варианты не работают
George
но опять же поясни - зачем там так делать релоад, он у тебя никогда не сработает, если я ничего не путаю
Dima
можешь положить файлы внутри в секретный каталог, а потом в entrypoint-скрипте вылить их в volume
То есть в момент билда, установить зависимости, переместить все, а потом в момент поднятия перенести еще раз?
Anonymous
ну, если других вариантов нет - да, почему так не сделать?
Получается когда у нас обновился только 1 сервис, то сервис nginx не обновляется (типа up to date) но при этом он теряет коннект между сервисами, которые перезапускались
George
Я не знаю, а есть еще варианты?
думать надо, мне лень
George
@georgiy_ivanovich если ты более предметно напишешь что тебе не нравится (подробно!) и какую задачу решаешь - может удастся придумать более оптимальный путь
George
А что он такое делает ?
он умеет следить за докер контейнерами и динамически перестраивать конфигурацию
Dima
@georgiy_ivanovich если ты более предметно напишешь что тебе не нравится (подробно!) и какую задачу решаешь - может удастся придумать более оптимальный путь
Я поднимаю на локале пхп проект, хочу сделать докер образ из него. Написал докерфайл для него, устанавливаю все зависимости и т.д. Далее запускаю сервисы через докер-компоуз. Сервис для нжинкса и для этого проекта(php-fpm использую). Т.к используются volumes в докер-компоуз, то он смотрит на локальные файлы и перезаписывает установленные vendors.
George
А его запускать как обычный nginx в докере только имедли поменять ?
посмотри доку, там свои особенности сопряжения его с докер демоном есть
George
вполне продакшн вариант, если не считать дублирования файлов.
George
главное, что нет вольюма - нет проблем с пермишенами на файлы. Кто-то тут на днях приходил с вопросом про пермишены....
Dima
Ну тип нет таблетки? Как вы решате проблему с node_modules(js), Scripts для питона и т.д, Тип не используете volumes
George
понимаешь, есть разница между сборка локально и сборка в пайплайне - это раз. Конечно, для локальной разработки удобно пробрасывать код в контейнер + хотрелоад кода
George
плюс есть разница между бекенд с зависимостями и штука, которая должна собираться как php-fpm в паре с nginx
victor
вроде да
сорри, знатно затупил с ответом. Если последний столбец то лучше юзать, aws '{print $NF}', но как ниже отметили это лажа и лучше использовать --format со встроенным темплейтингом
George
Ну вот я ищу решение хотя бы для разработки.
для разработки - ты тупо монтируешь каталог в оба контейнера, ога
George
зависимости можешь билдить хоть в контейнере с пхп фпм, хоть на хосте - без разницы
Dima
Так а установку зависимсотей мне нужно зайти через exec что ли?
Dima
В какой момент то это делать?
Dima
Если в момент билда, то перезапишет
Dima
Или build-stages как то решает это?
George
В какой момент то это делать?
Ты хочешь универсальный ответ. Его нет. Наши разрабы питонисты. Они вообще не парились. Написали мейкфайл с разными целями. Сборка, деплой, перекомпиляции. И плюс питона, что ты можешь условный pip install сделать на хосте, а в bind mount лежит весь venv питона
George
Готовый к употреблению
George
Другой вариант - ты разделяешь зависимости на часто и редко изменяемые. Редко изменяемые засовываешь в докерфайл. И билдишь. С остальными, да, можно через exec. Или тупо извратить entrypoint докера, чтобы в нем подтягивались всегда часто изменяемые зависимости (ес-но с кэшом)
George
Либо можно все скомбинировать в кучу ☺️
su
Либо можно все скомбинировать в кучу ☺️
source venv/bin/activate pip install -r requirements.txt
Dima
Мне не про питон, у питона виртуальное окржение +. Я давно не трогал docker и недавно начал в пхп. И сейчас не могу понять как лучше сделать. Как я понимаю, сейчас существует build-stages, может она решает эту проблему. Но вы говорите что нет готовой таблетки, поэтому странно конечно.
George
А, во-вторых, кэшировать данные.
Dima
Тут есть пхпешники, которые настроили "докер окружение"?
Dima
docker-compose.yml считается?)
с volumes и установкой composer зависимостей?
fLipE
ну да
Dima
ну да
Такой вопрос, запускаю docker-compose сервисы php-fpm и nginx. У каждого сервиса описана volume для исходников проекта. В Dockerfile php проекта делаю установку composer install. Но т.к в docker-compose я описал volume, после команды up/build все зависиомсти удаляются. Как решаете эту особенность?
fLipE
секундочку, гитлаб открою)
Dima
Ожидаю....
fLipE
fLipE
вот так
Buh
Такой вопрос, запускаю docker-compose сервисы php-fpm и nginx. У каждого сервиса описана volume для исходников проекта. В Dockerfile php проекта делаю установку composer install. Но т.к в docker-compose я описал volume, после команды up/build все зависиомсти удаляются. Как решаете эту особенность?
Если для разработки то ставить исходники в хост машину (либо локлаьным композером либо через контейнер) Если для прода - не монтировать volume с исходниками а копировать их в контейнер на этапе билда и там же ставить зависимости
George
А ещё @vicktor_kaplya знает магию, как популейтить вольюм из контейнера
Dima
Про такое думал, но каждый раз устанавливать?
George
Ну, это то, что я и сказал
George
Про такое думал, но каждый раз устанавливать?
Только при создании контейнера
fLipE
Про такое думал, но каждый раз устанавливать?
ну при развертывании установка зависимостей это нормально
George
Не пересоздавай его на каждый чих и рассматривай как легковесную виртмашину
fLipE
при обновлениях часто надо что-то обновить / добавить
George
Я ж не просто так про reload сказал
George
И ещё. Ну, скажем, рестартанет у тебя контейнер. Композер пойдет опять выполняться. И что? У тебя же все уже установлено, нет ?
Dima
То есть это нормальная практика. Ок, спасибо.
Anonymous
а кто-то уже использовал machinebox?
Oleg
вопрос, два env на одном сервере это плохо? (все разделено, docker-compose). Имею в виду то, что если dev env схавает все ресурсы, проду станет плохо
su
вопрос, два env на одном сервере это плохо? (все разделено, docker-compose). Имею в виду то, что если dev env схавает все ресурсы, проду станет плохо
Если схавает, отвалится сервис, прод будет жить дальше, в этом и плюс контейнеров, выключится сервис, остановятся все контейнеры сервак оживет