Как создать виртуальный домен в локальной сети с помощью Docker?

Как настроить виртуальные домены для различных приложений на Docker в локальной среде (Windows + WSL2), чтобы избежать конфликтов с сессиями при использовании `localhost` на разных портах, когда одновременно работают несколько приложений?
  • 15 сентября 2024 г. 9:53
Ответы на вопрос 2
Создание виртуальных доменов в локальной сети с использованием Docker может упростить работу с несколькими приложениями, избегая конфликтов при использовании `localhost`. Вам потребуется настроить локальные DNS-имена для ваших приложений, чтобы они были доступны по понятным URL, вместо использования различных портов. Ниже описан процесс, как это сделать на Windows с WSL2.

### Шаги для настройки виртуальных доменов

1. **Обновите файл hosts**:
   Вам нужно добавить записи в файл `hosts` вашей системы, чтобы указать, какие виртуальные домены будут указывать на ваш локальный сервер.

   - Откройте файл `C:\Windows\System32\drivers\etc\hosts` с правами администратора.
   - Добавьте строки для каждого вашего приложения. Например:

     ```plaintext
     127.0.0.1 app1.local
     127.0.0.1 app2.local
     ```

2. **Создайте Docker Compose файл**:
   Создайте файл `docker-compose.yml`, в котором будут определены ваши контейнеры с соответствующими именами хостов. Например:

   ```yaml
   version: '3'
   services:
     app1:
       image: ваш_образ_приложения_1
       container_name: app1
       networks:
         app-network:
           aliases:
             - app1.local
       ports:
         - "8081:80"  # проброс порта в случае необходимости

     app2:
       image: ваш_образ_приложения_2
       container_name: app2
       networks:
         app-network:
           aliases:
             - app2.local
       ports:
         - "8082:80"  # проброс порта в случае необходимости

   networks:
     app-network:
       driver: bridge
   ```

3. **Запустите контейнеры**:
   В директории, где находится файл `docker-compose.yml`, выполните команду:

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

   Это запустит ваши контейнеры в фоновом режиме.

4. **Необходимость изменения в браузере**:
   После этого вы сможете получить доступ к приложению по URL-адресу `http://app1.local` и `http://app2.local` в вашем браузере. Убедитесь, что ваш браузер не использует кэш, если вы изменяли файл `hosts`.

### Как использовать WSL2

- Убедитесь, что у вас установлен Docker и он корректно работает под WSL2. Также убедитесь, что ваши контейнеры имеют доступ к сети WSL2.
  
- Если вы хотите быстро проверить соединение из WSL2, выполните следующие команды:

  ```bash
  ping app1.local
  ping app2.local
  ```

### Заключение

Теперь вы можете разворачивать и тестировать несколько приложений на одном локальном сервере с использованием разных виртуальных доменных имен. Это устраняет необходимость в громоздком использовании различных портов и упрощает переключение между приложениями.
Использовать nginx reverse proxy
Похожие вопросы