Поднимаем Symfony в Docker контейнере

В примере проекта будет создано очень простое приложение Symfony с обычной настройкой Docker и следующими контейнерами:

  • Nginx webserver.
  • PHP 7.1.
  • Простой контейнер для Composer.

Приложение Symfony будет храниться в папке app, а структура файлов проекта будет выглядеть так:

Шаг с установкой Symfony я пропущу (как установить Symfony?), так как скорее всего вы уже знаете как это делать. Цель статьи показать как запустить Symfony в контейнере Docker.

Docker контейнеры

docker-compose.yml

PHP Контейнер

Dockerfile в директории docker/php

php.ini

Конфигурация Nginx vhost:

docker/nginx/app.conf

Запуск контейнеров

Достаточно поднятся в корень проекта (там где лежит docker-compose.yml) и запустить команду

Теперь приложение должно быть доступно по адресу http://127.0.0.1:8080, и вы должны увидеть эту страницу:

Все настройка закончена и можно приступать к работе 🙂

В следующей статье я расскажу как оптимизировать скорость работы Symfony в Docker контейнере для локального окружения.

P.S. Напишите в комментариях с какими проблемами вы столкнулись и я попробую вам помочь.

P.S.S: Github https://github.com/heilgar/docker-php

 

Leave a Reply

4 комментария

    • windsurfer АвторОтветить

      Спасибо за замечание.
      Да, вы правы, по возможности обновлю материал, свежими наработками 🙂

  1. beekirr Ответить

    Статья очень хорошая, если бы были объяснения, зачем нужны определенные строки в конфигах, то цены бы не было. И вопрос: мы не можем заменить upstream в конфиге nginx средствами докера?

    • windsurfer АвторОтветить

      В общем писалось как заметка для себя, что бы можно было быстро найти информацию. По поводу описания строк в конфигах, как по мне, то больше относиться уже к отдельным областям, будь то докер, пхп, или нжинкс.
      Не совсем понял ваш вопрос. Что вы подразумеваете под запеной upstream?

      Как минимум upstream можно отдельно маунтить.
      У нас есть кейс, (используем для разработки), когда мы подымаем через один docker-compose файл несколько контейнеров с симфони. под каждый контейнер дополнительно контейнер nginx + dependency в базовый контейнер nginx.
      Например:

      symfony_app_1:
        image: example
      symfony_app_2:
        image: example_2
      nginx:
        image: nginx_proxy
        ports:
          - 80:80
        depends_on:
          - nginx_app_1
          - nginx_app_2
      nginx_app_1:
        image: symfony
      nginx_app_2:
        image: symfony

      Нужно еще понимать что docker чито контейниризация. т.е. по сути в имеджах храниться какая-то конфигурация системы.

Добавить комментарий