Какие шаги нужно предпринять для разработки приложения на Symfony локально?

Как настроить локальную разработку Symfony приложения, использующего "doctrine/mongodb-odm-bundle", чтобы избежать необходимости установки MongoDB и его PHP расширения на хостовой машине?
  • 1 февраля 2024 г. 14:31
Ответы на вопрос 3
Чтобы разработать приложение на Symfony локально, нужно выполнить несколько шагов:

1. **Установить PHP**: Убедитесь, что вы установили подходящую версию PHP с необходимыми расширениями на вашем компьютере.

2. **Установить Composer**: Composer - это инструмент для управления зависимостями в PHP, который позволит вам установить Symfony и другие библиотеки.

3. **Создать новый проект Symfony**: Вы можете создать новый проект, выполнив следующую команду в терминале:

   ```bash
   composer create-project symfony/website-skeleton my_project_name
   ```

4. **Запустить сервер разработки**: После создания проекта вы можете запустить встроенный сервер с помощью `symfony` CLI (которую предварительно необходимо установить) или использовать встроенный сервер PHP:

   ```bash
   php -S localhost:8000 -t public
   ```

   или если установлен `symfony` CLI:

   ```bash
   symfony server:start
   ```

5. **Установка MongoDB ODM**:

   Установите пакет `doctrine/mongodb-odm-bundle` с помощью Composer:

   ```bash
   composer require doctrine/mongodb-odm-bundle
   ```

Чтобы избежать необходимости установки MongoDB и его PHP расширения на хостовой машине, лучше всего использовать Docker:

1. **Установить Docker**: Скачайте и установите Docker с официального сайта.

2. **Создать `Dockerfile` и `docker-compose.yml` файлы**:

   В `Dockerfile` вы создаете образ с необходимой версией PHP и расширениями. А `docker-compose.yml` позволяет вам определить и запустить многоконтейнерное приложение Docker.

`Dockerfile` пример:
```Dockerfile
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y libpng-dev
RUN docker-php-ext-install pdo pdo_mysql gd
COPY --from=composer /usr/bin/composer /usr/bin/composer
```

`docker-compose.yml` пример:
```yaml
version: '3.7'

services:
  php:
    build:
      context: .
    volumes:
      - .:/app
    working_dir: /app

  mongodb:
    image: mongo
    ports:
      - "27017:27017"

  webserver:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./public:/public
    depends_on:
      - php
      - mongodb
```

3. **Интеграция MongoDB в ваше Symfony приложение**:

   В файле `.env` вашего Symfony проекта укажите URL для подключения к контейнеру MongoDB:

   ```
   # .env
   ###> doctrine/mongodb-odm-bundle ###
   MONGODB_URL=mongodb://mongodb:27017/my_database
   MONGODB_DB=my_database
   ###< doctrine/mongodb-odm-bundle ###
   ```

   Обратите внимание на идентификатор `mongodb:27017`, где `mongodb` - это имя сервиса, определённое в `docker-compose.yml`.

4. **Запуск контейнеров**:

   В терминале перейдите в каталог вашего проекта и введите:

   ```bash
   docker-compose up -d
   ```

   Это создаст и запустит все сервисы, включая MongoDB и PHP.

5. **Разработка вашего приложения**:

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

При использовании Docker вам не нужно устанавливать MongoDB и PHP расшир
Поднять докер локально и запускать composer в нём.
Как правильно разрабатывать контейнеризированное приложение локально без необходимости устанавливать все зависимости на хост?

Можно использовать devcontainer. Поднимаешь контейнер со всеми зависимостями, внутрь vs code remote, а все исходники - в Volume
Похожие вопросы