端口更改后无法访问 Docker 应用程序

问题描述 投票:0回答:1

您能否帮我弄清楚为什么我的 Adguard Home 实例在初始设置期间通过端口 3000 正常工作,但完成设置后我无法访问端口 80(Azure Web App HTTP 运行状况探测也无法访问)?

一些背景:我想获得 Azure 的实践经验,以准备 AZ-104 考试。当然,我也在向 Microsoft learn 以及那些为您准备考试实际问题的网站学习。

但是我需要一些实践经验才能掌握理论,而且我喜欢边做边学。我确实在托管 web/mail/dns/proxy/game/smarthome/etc 服务器方面拥有多年的业余爱好经验,但 Azure 和 Docker 对我来说是全新的(除了拥有几个 Azure 基础证书之外)。我的方法是在 Azure 上以尽可能多的不同方式安装 Adguard Home,至少触及 Azure 的这些方面。我已经通过 Azure 容器服务,然后使用界面以及 SSH / CLI 成功地为 Windows 和 Linux VM 完成了此操作。然而,对于 Azure Web Apps,我陷入了困境。

我能够成功从 Docker hub 中提取镜像。经过大约 2 个小时的摆弄,我弄清楚了如何分配/打开端口、启动通过端口 3000 为安装页面提供服务的 Web 服务器以及如何安装卷,以便安装在周期/重新启动之间实际上是持久的。

安装完成后,Adguard Home 会将其提供 WebUI 的端口从端口 3000 切换到端口 80。我的想法是我需要将 WEBSITES_PORT、EXPOSE 和 PORT 从 3000 调整为 80。但是,即使我知道该应用程序在端口 80 上广播,探测器未检测到它,我也无法访问安装后的 Web UI。有谁知道问题可能是什么?顺便说一句,在日志中(通过在“高级工具”页面上下载logs.zip 访问)Adguard 不会抛出任何错误。它甚至抛出一条信息消息,指示 webui 应在 127.0.0.1:80 上可用(DNS 服务器在 127.0.0.53 上)。

这是否是因为 Adguard Home 在 127.0.0.1:80 而不是 0.0.0.0:80 上广播?

TL;DR 应用程序运行正常,安装后可立即访问。配置完成后,WebUI 端口从 3000 更改为 80,现在应用程序无法再访问。

谢谢!

azure azure-web-app-service azure-webapps
1个回答
0
投票

我已经在 Docker 容器中设置了 Express.js 应用程序和

AdGuard
Home,您可以使用 Docker Compose 来管理这两个服务。创建一个 docker compose 文件并配置端口,如下所示。

docker-compose.yml:

version: '3'

services:
  express-app:
    image: node:14
    working_dir: /usr/src/app
    volumes:
      - ./express-app:/usr/src/app
    ports:
      - "3000:3000"
    command: ["npm", "start"]

  adguard:
    image: adguard/adguardhome
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "80:80"
    volumes:
      - ./adguard-data:/opt/adguardhome/work
    command: ["./AdGuardHome", "-c", "/opt/adguardhome/AdGuardHome.yaml"]

enter image description here

在 Azure 门户中,导航到您的 Web 应用程序,转到“配置”,然后检查

WEBSITES_PORT
是否设置为
80
,即使它也是默认端口。

Dockerfile:

# Use the official AdGuard Home image
FROM adguard/adguardhome

# Expose necessary ports
EXPOSE 53/tcp 53/udp 80/tcp

# Set AdGuard Home configuration to bind to all available interfaces
RUN sed -i 's/bind_host: 127.0.0.1/bind_host: 0.0.0.0/' /opt/adguardhome/AdGuardHome.yaml

# Command to run AdGuard Home
CMD ["./AdGuardHome", "-c", "/opt/adguardhome/AdGuardHome.yaml"]
  • 下面的
    RUN
    命令使用
    sed
    修改 AdGuard Home 配置文件 (
    AdGuardHome.yaml
    ) 并将
    bind_host
    127.0.0.1
    更改为
    0.0.0.0
    。此修改允许 AdGuard Home 侦听所有可用的网络接口。
    • docker run -p 53:53/tcp -p 53:53/udp -p 80:80/tcp -v /path/to/config:/opt/adguardhome/work --name adguard-home -d my-adguard-home:latest

Docker状态:

enter image description here

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.