Я некоторое время работал с докеризованным приложением и все еще не смог выяснить, существует ли правильный способ структурирования кода в контейнере.
Несколько различных пакетов используют несколько подходов:
- Postgres следует более традиционному способу и сохраняет данные в
/var/lib/postgresql/data
- Redis меньше заботится о структуре unix и помещает постоянные данные в папку
/data
, но когда приходит к конфигурации, которой придерживается: /usr/local/etc/redis/redis.conf
- Узел поощряет помещать данные приложения в
/usr/src/app
и при использовании docke-compose они упоминают /home/node/app
Что ...? - PHP делает что-то похожее для приложений CLI и для веб-сайтов, они go с обычными
/var/www/html
В том, что касается сценариев входа, проблема аналогична одной, помещенной в /
другие ставят это в /usr/local/bin
.
Надеюсь, вы меня запутали.
Предполагается, что контейнеры запускают один основной процесс, который они представляют, и когда этот процесс останавливается, они d ie. Разумно ли угрожать ей, как полноценной linux системой, и придерживаться рекомендованного способа структурирования вещей? И если да, то должен ли я go с /bin
, /usr/bin
или /usr/local/bin
для сценариев оболочки и /var/lib/app
, /lib/app
или, возможно, /usr/src/app
для кода приложения? Или правда где-то между и сценарий /entrypoint.sh
тоже в порядке?