Для начала создадим сеть в Docker командой: docker network create vpn. Затем подготовим образ с Wireguard на базе Debian, устанавливая необходимые пакеты, такие как wireguard, iproute2 и procps. Также добавим gettext-base и wget для загрузки дополнительных файлов.

После этого внесем патч в wg-quick для устранения ошибки sysctl: permission denied, чтобы избежать проблем с настройками сетевого интерфейса. В рабочей директории /opt/app загрузим и установим dnscrypt-proxy.

Следующий шаг — создать файл docker-compose.yml для настройки сервиса Wireguard. В нем укажем необходимые переменные окружения, такие как WG_ADDRESS, WG_PRIVATEKEY и другие. Эти переменные будут подставлены в шаблон конфигурации wg0.conf-template.

Соберем и запустим сервис с помощью команд docker compose build и docker compose up -d. Чтобы подключить приложение, создадим еще один сервис, зависящий от Redis, и укажем режим сети как container:vpn.

Для проверки работы приложения запустим команду с curl, чтобы удостовериться, что оно использует тоннель Wireguard. Также стоит убедиться, что зависимости доступны по именам сервисов. Важно помнить, что в случае перезагрузки контейнера Wireguard, доступ приложения может быть потерян.