Я работаю с приложением ASP. NET Core 3.0 для нескольких контейнеров в службе приложений Azure Linux для контейнеров, используя Docker Compose. Контейнеры создаются и отправляются в Azure Реестр контейнеров через конвейеры CI и конвейеры CD, развертываемые в службу приложения с использованием docker -compose. [Environment] .yml ".
Я пытаюсь использовать nginx и jwilder's docker -gen в качестве обратного прокси-сервера (разделяйте контейнеры, чтобы избежать привязки сокета docker к публично доступной службе контейнеров), и используйте имена виртуальных хостов для доступа к различным службам через net.
Кажется, я обхожу круги по следующим 3 ошибкам:
1. Веб-приложение, отображающее страницу «Добро пожаловать в Nginx» с повторяющимися журналами:
2020-02-26T15: 18: 44.021444322Z 2020/02/26 15:18:44 Просмотр docker событий
2020-02-26T15: 18: 44.022275908Z 2020/02/26 15:18:44 Ошибка при получении docker информации о сервере: Get http://unix.sock/info: набрать unix /tmp/docker.sock: подключиться: нет такого файла или каталога
2020-02-26T15: 18: 44.022669201Z 2020/02/26 15:18: 44 Ошибка при выводе списка контейнеров: Получить http://unix.sock/containers/json?all=1: набрать unix /tmp/docker.sock: подключиться: нет такого файла или каталога
2020-02-26T15: 18: 44.405594944Z 2020/02/26 15:18:44 Docker прервано соединение с демоном
2. 502 Bad Gateway
502 - веб-сервер получил неверный ответ, выступая в качестве шлюза или прокси-сервера. Проблема со страницей, которую вы ищете, и она не может быть отображена. Когда веб-сервер (действуя в качестве шлюза или прокси-сервера) связался с вышестоящим контент-сервером, он получил неверный ответ от контент-сервера.
3. Страница «Ошибка приложения :(» службы сервиса приложения.
Вот мой docker -compose.development.yml:
version: "3.7"
services:
nginx:
image: nginx
environment:
DEFAULT_HOST: ***.azurewebsites.net
ports:
- "80:80"
volumes:
- "${WEBAPP_STORAGE_HOME}/tmp/nginx:/etc/nginx/conf.d"
dockergen:
image: jwilder/docker-gen
command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
volumes_from:
- nginx
volumes:
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "${WEBAPP_STORAGE_HOME}./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl"
webapp:
image: ***.azurecr.io/digitalcore:dev
restart: always
environment:
VIRTUAL_HOST: ***.azurewebsites.net
depends_on:
- nginx
dockerfile службы «webapp» (предоставляет порты 80, 443):
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /source
COPY . .
RUN dotnet restore
RUN dotnet publish --output /app/ --configuration Release --no-restore
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app .
EXPOSE 80 443
ENTRYPOINT ["dotnet", "DigitalCore.WebApp.dll"]
Ошибка № 1 кажется мне самой близкой к тому, чтобы увидеть, как она работает, с проблемами, связанными с правильной настройкой томов для Azure Linux Служба приложений ($ {WEBAPP_STORAGE_HOME} появился после долгих копаний).
Имена сетей и контейнеров, похоже, только ухудшили мои усилия, поэтому они были удалены, чтобы попытаться сохранить все, что нужно, чтобы заставить его работать. Сервис "веб-приложения" находится в центре моего внимания в данный момент
Может кто-нибудь определить, где я иду не так ?! Я буду вечно благодарен за любые слова мудрости ...
ОБНОВЛЕНИЕ:
Некоторый прогресс может показаться - после удаления разрешений "ro" из тома контейнера, docker .sock теперь находится , но docker -gen не может подключиться до конечной точки.
2020-02-26T22: 21: 44.186316399Z 2020/02/26 22:21:44 Просмотр docker событий
2020-02 -26T22: 21: 44.187487428Z 2020/02/26 22:21:44 Ошибка при получении docker информации о сервере: невозможно подключиться к Docker конечной точке
2020-02-26T22: 21: 44.188270247Z 2020 / 26.02 22:21:44 Ошибка при выводе списка контейнеров: невозможно подключиться к Docker конечной точке
2020-02-26T22: 21: 44.500471940Z 2020/02/26 22:21:44 Docker подключение к демону прервано
ОБНОВЛЕНИЕ 2
Я теперь собрал контейнеры и отправил их в Azure Реестр контейнеров, поэтому я не вытаскиваю из разных мест , Это мой текущий docker -компонент:
version: "3.7"
services:
nginx:
image: ***.azurecr.io/nginx:dev
ports:
- "80:80"
volumes:
- "${WEBAPP_STORAGE_HOME}/etc/nginx/conf.d"
dockergen:
image: ***.azurecr.io/dockergen:dev
privileged: true
command: -notify-sighup nginx -watch -only-exposed /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
volumes_from:
- nginx
volumes:
- "${WEBAPP_STORAGE_HOME}/var/run/docker.sock:/tmp/docker.sock"
- "${WEBAPP_STORAGE_HOME}./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl"
webapp:
image: ***.azurecr.io/digitalcore:dev
restart: always
environment:
VIRTUAL_HOST: ***.azurewebsites.net
depends_on:
- nginx