Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add basic docker support #95

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

SerafimArts
Copy link
Contributor

Added basic docker support for local development with:

  • php-fpm 8.3
  • caddy 2.7
  • sqlite 3.x

@m0nclous
Copy link
Contributor

m0nclous commented Mar 3, 2025

Чем штатный sail не угодил?

@SerafimArts
Copy link
Contributor Author

SerafimArts commented Mar 3, 2025

Задача докера обеспечить полностью идентичное окружение на локальной и прод среде, включая все настройки (кроме специальных дев.), все расширения и их версии, все зависимости и их оркестрацию. Помимо этого, ещё обеспечить билд конейнера (например через мультистейдж) в регистри для дальнейшего деплоя.

А Sail - инструмент, аналогичный Open Server, он подходит исключительно для начинающих/джунов, просто чтобы запустить и всё хоть как-то работало, при этом не обеспечивает ничего из перечисленных задач. А докер там исключительно как платформа на которой он запускается. С таким же успехом можно пользоваться тем же Denwer или Open Server, теряется весь смысл докера.

Смысла добавлять поддержку того, что априори не совместимо с продом - нет (например, на проде caddy).

@m0nclous
Copy link
Contributor

m0nclous commented Mar 3, 2025

Задача докера обеспечить полностью идентичное окружение на локальной и прод среде, включая все настройки (кроме специальных дев.), все расширения и их версии, все зависимости и их оркестрацию. Помимо этого, ещё обеспечить билд конейнера (например через мультистейдж) в регистри для дальнейшего деплоя.

Согласен, но не со всем. Докер хоть и позволяет воспроизвести production окружение, но нет смысла делать это для local dev окружения всегда и на 100%.

Например, для отладки и профилирования может потребоваться задействовать xdebug, которого на проде быть по хорошему не должно. Также и настройки opcache могут отличаться от production.

Для проверки рассылки используют mailhog контейнер, который тоже нужен только для local dev.

Если необходимо приблизить dev local окружение к production, то я бы рекомендовал сделать сначала docker-compose.yml и Dockerfile для сборки и поднятия production контейнера, а потом уже в docker-compose.override.yml добавить то, что нужно для локальной разработки.

Например, я бы не рекомендовал монтировать локальную директорию .:/home/laravel/laravel.su на проде, потому-что там в принципе не должно быть исходников.

Также если потребуется внести особые изменения в образ для local dev, то тут можно будет использовать мультистейдж, про который ты упомянул.

В production окружении docker compose при запуске игнорирует docker-compose.override.yml, но стоит проверить лишний раз.

@SerafimArts
Copy link
Contributor Author

SerafimArts commented Mar 3, 2025

Например, для отладки и профилирования может потребоваться задействовать xdebug, которого на проде быть по хорошему не должно. Также и настройки opcache могут отличаться от production.

Я об этом явно написал:

включая все настройки (кроме специальных дев.)

Как и про мультистейдж билд, где локальное можно поверх отдельным слоём накатить.

Для проверки рассылки используют mailhog контейнер, который тоже нужен только для local dev.

Это всё решается докер профилями или как ты правильно написал через .override.yml

Например, я бы не рекомендовал монтировать локальную директорию .:/home/laravel/laravel.su на проде, потому-что там в принципе не должно быть исходников.

Ну если деплоить контейнер на прод через сварм или кубер, то очевидно для этого делается COPY в докерфайле. Но в данном случае пока что об этом речи не идёт. Сейчас хотя бы локально поднять всё с таким же окружением, т.к. сейчас работать с проектом нельзя, т.к. докер тупо отсутствует.

P.S. Понимаю, что для "просто поднять хотя бы" ты прав и Sail достаточно, но как бы от него потом и так и так придётся избавляться в пользу более адекватного и prod-like окружения.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants