Использование Docker с Symfony
Дата обновления перевода 2024-07-29
Использование Docker с Symfony
Можете ли вы использовать Docker с Symfony? Конечно! И существует несколько инструментов, которые могут вам в этом помочь, в зависимости от ваших потребностей.
Полное окружение Docker
Если вам нужно полное окружение Docker (т.е. где PHP, веб-сервер, база данных и прочее, все находится в Docker), прочтите https://github.com/dunglas/symfony-docker.
Как вариант, вы можете установить PHP на вашей локальной машине, и использовать бинарную интеграцию symfony с Docker . В обоих случаях, вы можете воспользоваться преимуществами автоматической конфигурации Docker из Symfony Flex .
Рецепты Flex & конфигурация Docker
Рецепт Flex для некоторых пакетов также включает в себя конфигурацию
Docker. К примеру, когда вы выполняете composer require doctrine
(чтобы получить symfony/orm-pack
),
ваш файл compose.yaml
будет автоматически обновлен, чтобы включать в себя
сервис database
.
Первый раз, когда вы установите рецепт, содержащий конфигурацию Docker, Flex
спросит вас, хотите ли вы добавить ее. Или, вы можете установить свои предпочтения
в composer.json
, установив конфигурацию extra.symfony.docker
как true
или
false
.
Некоторые рецепты также имеют дополнения к вашему Dockerfile
. Чтобы получить
эти изменения, вам нужно уже иметь Dockerfile
в корне вашего приложения со
следующим кодом где-то внутри:
1 2
###> recipes ###
###< recipes ###
Рецепт найдет этот раздел и добавит некоторые изменения внутри. Если вы используете https://github.com/dunglas/symfony-docker, у вас это уже будет.
После установки пакета, пересоздайте ваши контейнеры, выполнив:
1
$ docker-compose up --build
Бинарный веб-сервер Symfony и поддержка Docker
Если вы используете (например, symfony server:start
),
то он может автоматически определять ваши сервисы Docker и демонстрировать их в виде
переменных окружения. См. .
Note
Пользователям macOS необходимо явно разрешить использовать сокет Docker по умолчанию, чтобы интеграция с Docker работала как объясняется в документации Docker.