fra*_*ezy 5 nginx docker docker-compose azure-web-app-service jwilder-nginx-proxy
我正在使用 Docker Compose 在 Azure Linux 应用服务容器上运行 ASP.NET Core 3.0 多容器应用程序。容器通过 CI 管道构建并推送到 Azure 容器注册表,CD 管道使用“docker-compose.[environment].yml”部署到应用程序服务。
我正在尝试使用 nginx 和 jwilder 的 docker-gen 作为反向代理(单独的容器以避免将 docker 套接字绑定到公开暴露的容器服务),并使用虚拟主机名通过网络访问各种服务。
我似乎在以下三个错误之间兜圈子:
1. Web 应用程序显示“欢迎使用 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 服务器信息时出错:获取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 网关错误
502 - Web 服务器在充当网关或代理服务器时收到无效响应。您要查找的页面有问题,无法显示。当 Web 服务器(充当网关或代理)联系上游内容服务器时,它从内容服务器收到无效响应。
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
Run Code Online (Sandbox Code Playgroud)
“webapp”服务 dockerfile(公开端口 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"]
Run Code Online (Sandbox Code Playgroud)
错误 #1 似乎是我最接近看到它工作的,问题集中在为 Azure Linux 应用服务正确配置卷(经过大量挖掘后,${WEBAPP_STORAGE_HOME} 出现了)。
到目前为止,网络和容器名称似乎只会让我的工作变得更糟,因此它们被删除,以尝试保持最基本的功能以使其正常工作。“webapp”服务是我目前关注的焦点
有人能发现我哪里错了吗?我将永远感激任何智慧的话语......
更新:
看起来有些进展 - 从容器卷中删除“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/02/26 22:21:44 列出容器时出错:无法连接到 Docker 端点
2020-02-26T22:21:44.500471940Z 2020/02/26 22:21:44 Docker 守护进程连接中断
更新2
我现在已经构建了容器并推送到 Azure 容器注册表,因此我不会从不同的位置拉取。这是我当前的 docker-compose:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |