Size: a a a

2017 December 20

SP

Sergey Protko in PHP fwdays
Oleksandr Savchenko
Всем привет! Разбираюсь с деплоем с docker’ом и чем глубже лезу тем больше вопросов возникает. Насколько я понимаю, то контейнер должен быть single responsibility. т. е. для простого приложения у нас должно быть 3 контейнера: база данных, веб сервер (nginx) и сервер приложения (php-fpm). Если так, то в приложении есть директория web, которая должна быть доступна как в контейнере приложения, так и в контейнере веб-сервера. Логично ее маунтить как volume, но volume маунтится как root:root и, получается, у нас нет прав на запись в ту директорию. Как это можно победить, подскажите, пожалуйста? Или же я вообще не в ту степь пошел?
для всяких uploads стоит использовать named volumes
источник

EK

Eugene Kosinskiy in PHP fwdays
поставить 777 на ту директория которая нужна на запись
источник

SP

Sergey Protko in PHP fwdays
через них ты сможешь организовать доступ к файлам для nginx контейнера
источник

SP

Sergey Protko in PHP fwdays
Eugene Kosinskiy
поставить 777 на ту директория которая нужна на запись
лучше просто добавить процессы в одну группу
источник

OS

Oleksandr Savchenko in PHP fwdays
Sergey Protko
лучше просто добавить процессы в одну группу
поставить одинаковый gid на разных контейнерах?
источник

SP

Sergey Protko in PHP fwdays
Oleksandr Savchenko
поставить одинаковый gid на разных контейнерах?
в энтрипоинт/Dockerfile просто добавить пользователя под которым у тебя все пишется (www-data наскоько я понял) в группу....
источник

SP

Sergey Protko in PHP fwdays
p.s. вообще мне стыдно но я запускаю php-fpm из под рута
источник

SP

Sergey Protko in PHP fwdays
и чет как-то пока не знаю хорошо это или плохо...
источник

SP

Sergey Protko in PHP fwdays
да и тот факт что я чаще пишу в какой-нибудь s3 налагает свои нюансы (вроде отсутствия волумов))
источник

SP

Sergey Protko in PHP fwdays
но зато кучу проблем убирает)
источник

OS

Oleksandr Savchenko in PHP fwdays
окей, спасибо.
а как быть с симфони приложением, у которого css и js ставятся после комманды assets:install и они по сути нужны на нжинкс контейнере, а приложение я собираю на контейнере приложения. получается, мне нужно приложение собирать и там, и там или как лучше это сделать?
источник

OS

Oleksandr Savchenko in PHP fwdays
или папку с приложением делать как named volume и прокидывать туда, куда нужно?
источник

SP

Sergey Protko in PHP fwdays
часто люди просто не заморчиваются и юзают apache по этой причине. У меня к примеру флоу сборки был следующий:

- composer install
- assets:install + assets:dump в директорию webroot nginx-а (то есть не в web а какой-нибудь docker/nginx/web).
- собирал образ для php-fpm и вшивал туда только php
- собирал образ для nginx и вшивал туда ассеты
источник

YB

Yurii Bortnyk in PHP fwdays
у меня nginx и web в одном )
источник

SP

Sergey Protko in PHP fwdays
с учетом того что есть multistage билды в докерах и возможность при сборке копировать файлы из других образов - не должно быть сложностей
источник

OS

Oleksandr Savchenko in PHP fwdays
Sergey Protko
часто люди просто не заморчиваются и юзают apache по этой причине. У меня к примеру флоу сборки был следующий:

- composer install
- assets:install + assets:dump в директорию webroot nginx-а (то есть не в web а какой-нибудь docker/nginx/web).
- собирал образ для php-fpm и вшивал туда только php
- собирал образ для nginx и вшивал туда ассеты
то есть ты собирал приложение вне контейнера, а потом просто ложил в разные контейнеры то, что им нужно?
источник

SP

Sergey Protko in PHP fwdays
ну мол сейчас можно в Dockerfile для php образа собрать ассеты (что бы пользоваться кэшем докера для composer install например) а потом при сборке nginx образа просто скопировать web
источник

OS

Oleksandr Savchenko in PHP fwdays
Yurii Bortnyk
у меня nginx и web в одном )
не удобно же логи смотреть по docker logs когда в одном
источник

SP

Sergey Protko in PHP fwdays
ADD --from your-php-fpm-image:${TAG}/app/web/assets /webroot/asssets
источник

SP

Sergey Protko in PHP fwdays
Oleksandr Savchenko
не удобно же логи смотреть по docker logs когда в одном
увы в контексте php-fpm логи вообще неудобно
источник