Localhost Docker позволяет развернуть окружение для разработки веб-приложений.
-
Создать сеть
localhost
на хостеdocker network create localhost
-
Запустить сервисы
docker-compose \ -f docker-compose.yml \ -f proxy.yml \ -f mysql.yml \ -f mailcatcher.yml \ up -d
Простой Nginx прокси для Docker. Можно использовать для локальной разработки. Запускает контейнеры:
nginx
- Связывает порты 80 и 443 с хоста в контейнер, таким образом обрабатывает запросы, приходящие на хост.jwilder/docker-gen
- Регенерирует конфиг для nginx при запуске/остановке контейнеров.
При запуске прокси на Windows может возникнуть ошибка монтирования Docker сокета:
Cannot create container for service: b'Mount denied:\nThe source path "\\\\var\\\\run\\\\docker.sock:/var/run/docker.sock"\nis not a valid Windows path'
Для этого необходимо определить переменную окружения COMPOSE_CONVERT_WINDOWS_PATHS
в значение 1
. Это можно сделать командой в консоли:
// CMD
set COMPOSE_CONVERT_WINDOWS_PATHS=1
// Powershell
$Env:COMPOSE_CONVERT_WINDOWS_PATHS=1
Или глобально через "Панель управления" (Панель управления\Система и безопасность\Система\Дополнительные параметры системы\Переменные среды)
В конфиге проекта docker-compose.yml
указать сеть localhost
:
networks:
localhost:
external: true
Для контейнера с веб-сервером (nginx, apache) в переменные окружения указать:
- VIRTUAL_HOST=hostname
- VIRTUAL_PORT=8080
Можно указать несколько доменов через запятую.
Больше переменных окружения можно найти в документации к docker-gen
Так же контейнеру с веб-сервером необходимо указать сети:
networks:
- default
- localhost
default
- чтобы для доступа к контейнерам в сети проекта
localhost
- для участия в прокси
Такая ошибка встречалась на Windows при монтировании директории с ntfs диска. Чтобы это исправить можно монтировать вместо
директории docker-том. Для этого в docker-compose.override.yml
прописать:
version: '3'
services:
nginx:
volumes:
- nginx:/etc/nginx/conf.d:ro
docker-gen:
volumes:
- nginx:/etc/nginx/conf.d:ro
volumes:
nginx:
Запускать сервисы вместе с указанием файла -f docker-compose.override.yml
после остальных файлов.
В папке volumes/certs
сгенерировать SSL ключ для нужного домена:
openssl req -x509 -newkey rsa:4096 -keyout demo.local.key -out demo.local.crt -days 365 -nodes -subj '/CN=demo.local'
Пересоздайте контейнер с приложением. После регенерации конфига, https будет настроен автоматически.