Есть сервер Ubuntu 24.04, PHP на хосте нет — PHP-FMP работает только в Контейнере (Alpine). Это pet проект жены.
В репозитории Git:
.
├── dump
├── logs
│ ├── backup
│ └── make
├── prod
│ ├── duogu # код приложения
│ ├── duogu.yml # docker-compose для PHP/MySQL
│ ├── Dockerfile
│ ├── duogu.conf
│ ├── entrypoint.sh
│ ├── mysqld.cnf
│ └── php.ini
├── proxy
│ ├── nginx.yml # docker-compose для nginx
│ ├── certbot.yml # docker-compose для certbot
│ ├── certbot
│ │ ├── conf
│ │ └── www
│ ├── conf.d
│ └── nginx.conf
├── scripts
├── env.examle
└── README.md
Схема такая:
На хосте:
пользователь deploy — uid 1000 (деплоит проект, обновляет код)
www-data — uid 33
В контейнере:
www-data — uid 82 (alpine)
Весь код проекта лежит в Docker volume, примонтированном с хоста
Разделять код и storage (uploads/cache/logs) не хочется — всё лежит в одном volume
Нужно корректно организовать права, чтобы:
– deploy мог без проблем обновлять код из Git на хосте
– контейнерный www-data мог читать и писать файлы
– не использовать 777
решение должно быть адекватным.
Вопрос:
Что считается наиболее правильным и практичным для production?
На что стоит ориентироваться: безопасность, поддерживаемость, best practices Docker/Linux?