Поделиться через


Использование прокси-сервера разработки в контейнере Docker

При использовании прокси-сервера разработки его можно запустить непосредственно на компьютере или в контейнере Docker. Запуск прокси-сервера разработки в Docker — отличный способ изолировать его от локальной среды. Он также предлагает единообразный способ использования Dev Proxy между вашим локальным компьютером и средами CI/CD.

Используйте образ Docker для Dev Proxy

Для удобства мы предоставляем готовый образ Docker с прокси-сервером разработки. Его можно использовать для запуска прокси-сервера разработки в контейнере Docker. Вы можете извлечь образ из реестра контейнеров GitHub, выполнив следующую команду:

docker pull ghcr.io/dotnet/dev-proxy:latest

Замечание

Чтобы попробовать последние предварительные версии функций, используйте бета-версию контейнера прокси-сервера разработки.

docker pull ghcr.io/dotnet/dev-proxy:beta

Если вы используете Dev Proxy в конвейере CI/CD, рекомендуется использовать конкретную версию образа вместо использования latest или beta. Таким образом, вы можете убедиться, что ваш поток не подвержен влиянию ломающих изменений, внесённых в последнюю версию Dev Proxy. Например, чтобы использовать прокси-сервер разработки версии 0.26.0, используйте следующую команду:

docker pull ghcr.io/dotnet/dev-proxy:0.26.0

Запуск контейнера прокси-сервера разработки

Чтобы запустить контейнер прокси-сервера разработки, используйте следующую команду:

docker run \
    # remove the container when it exits
    --rm \
    # run the container interactively
    -it \
    # map Dev Proxy ports to the host
    -p 8000:8000 -p 8897:8897 \
    # map volumes to the host. Create the `cert` folder in the current working directory before running the command
    -v ${PWD}:/config -v ${PWD}/cert:/home/devproxy/.config/dev-proxy/rootCert \
    # specify the image to use
    ghcr.io/dotnet/dev-proxy:0.26.0

После выполнения команды прокси-сервер разработки запускается автоматически и прослушивает трафик через порт 8000. Так как он работает в контейнере Docker, он не регистрируется в качестве системного прокси-сервера на узле для перехвата веб-запросов. Вместо этого необходимо вручную настроить системный прокси-сервер на узле или настроить прокси-сервер для приложения.

Интерактивным запуском контейнера (с помощью -it параметров) можно управлять прокси-сервером разработки из командной строки. Взаимодействие с прокси-сервером разработки полезно, например для запуска и остановки записи, очистки экрана и т. д. Если вы запускаете контейнер в фоновом режиме, вы по-прежнему можете управлять прокси-сервером разработки с помощью API прокси-сервера разработки.

Параметры

Docker прокси-сервера разработки содержит несколько параметров, которые можно использовать для настройки его поведения.

Порты

Изображение предоставляет следующие порты:

  • 8000 — порт, на котором прокси-сервер разработки прослушивает входящий трафик.
  • 8897 — порт, на котором прокси-сервер разработки предоставляет свой API. Его можно использовать для программного взаимодействия с прокси-сервером разработки.

Это важно

Не забудьте связать оба порта с хостом, чтобы можно было получить доступ к Dev Proxy с локального компьютера и использовать Dev Proxy Toolkit.

Объемы

Изображение отображает следующие тома:

  • /config — текущий рабочий каталог, из которого контейнер запускает прокси-сервер разработки. Если папка, которую вы сопоставили, содержит файл devproxyrc.json, Dev Proxy автоматически использует его для настройки.
  • /home/devproxy/.config/dev-proxy/rootCert — папка, в которой dev Proxy хранит корневой сертификат. При сопоставлении дискового тома с вашим хостом, вы можете легко получить доступ к корневому сертификату и установить его в вашей системе или браузере.

Подсказка

Кроме того, чтобы сопоставить корневой сертификат с узлом, можно использовать API прокси-сервера разработки для скачивания открытого ключа корневого сертификата в формате PEM (расширенная почта конфиденциальности). Чтобы скачать сертификат, вызовите конечную точку GET http://127.0.0.1:8897/proxy/rootCertificate?format=crt .

Использование прокси-сервера разработки в Docker

При запуске контейнера прокси-сервера разработки он автоматически запускает прослушивание входящего трафика через порт 8000.

Конфигурация по умолчанию

Прокси-сервер разработки ищет devproxyrc.json файл в папке, сопоставленной с томом /config . Если он находит файл, он использует его для настройки. Если он не находит файл, он использует конфигурацию по умолчанию.

Настраиваемая конфигурация

Вы можете использовать настраиваемую конфигурацию для прокси-сервера разработки, создав devproxyrc.json файл в папке, которую вы сопоставляете с томом /config . Кроме того, можно указать файл конфигурации с помощью --config-file параметра при запуске прокси-сервера разработки. Например, чтобы использовать myconfig.json файл, используйте следующую команду:

docker run \
    # remove the container when it exits
    --rm \
    # run the container interactively
    -it \
    # map Dev Proxy ports to the host
    -p 8000:8000 -p 8897:8897 \
    # map volumes to the host. Create the `cert` folder in the current working directory before running the command
    -v ${PWD}:/config -v ${PWD}/cert:/home/devproxy/.config/dev-proxy/rootCert \
    # specify the image to use
    ghcr.io/dotnet/dev-proxy:0.26.0 \
    # specify the configuration file to use
    --config-file /config/myconfig.json

Указанный файл конфигурации должен быть доступен из контейнера. Если используется относительный путь, он должен быть относительно тома /config .

Другие варианты

Если вы хотите использовать другие параметры, их можно указать так же, как при запуске прокси-сервера разработки непосредственно на компьютере. Например, чтобы указать URL-адреса для просмотра, используйте следующую команду:

docker run \
    # remove the container when it exits
    --rm \
    # run the container interactively
    -it \
    # map Dev Proxy ports to the host
    -p 8000:8000 -p 8897:8897 \
    # map volumes to the host. Create the `cert` folder in the current working directory before running the command
    -v ${PWD}:/config -v ${PWD}/cert:/home/devproxy/.config/dev-proxy/rootCert \
    # specify the image to use
    ghcr.io/dotnet/dev-proxy:0.26.0 \
    # specify the URLs to watch
    --urls-to-watch "https://example.com/*"