You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建暴露两个端口的Azure多容器应用?

Azure多容器应用部署:单容器多端口配置问题

问题描述

我需要运行一个多容器应用,其中Python容器需开放两个独立端口(8080用于主服务,8050用于单独线程处理文件上传),不想将Python服务拆分为两个容器。已经尝试多种方法一周,求可行方向。

目前遇到的平台限制:

  • Azure Web App支持多容器部署,但无法使用自定义端口;
  • Azure Container Apps支持自定义端口,但配置时仅允许指定单个镜像。

现有配置文件

docker-compose.yml

version: '3.8'

volumes:
  db-data:
  uploads:

services:
  redis:
    image: redis:alpine
    ports:
      - '6379:6379'

  python-server:
    image: <custom image name>:latest
    privileged: true
    build:
      context: .
      dockerfile: dockerfile
    working_dir: /
    ports:
      - '8080:8080'
      - '8050:8050'
    env_file: .env
    volumes:
      - db-data:/instance/
      - uploads:/persistence/uploads/ 

Dockerfile

FROM python:3.11

WORKDIR /

# Install dependencies
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

# Copy your application code
COPY . .

VOLUME /instance/
VOLUME /persistence/uploads/

# Expose ports 
EXPOSE 8080
EXPOSE 8050

# Run the server command
CMD ["./run-app.sh"]

解决方案方向

1. Azure Container Apps + 容器应用环境(推荐)

Azure Container Apps单个实例虽仅支持一个镜像,但可在同一容器应用环境下部署多个独立容器应用:

  • 将Redis单独部署为一个容器应用,无需暴露公网端口(同环境内容器可通过内部域名redis.<环境名>.internal:6379访问);
  • 部署Python服务容器应用时,在容器配置中添加两个TCP端口映射(8080和8050);
  • 两个端口可通过容器应用的公网域名访问,格式为https://<应用名>.azurecontainerapps.io:8080和https://<应用名>.azurecontainerapps.io:8050(启用HTTPS后)。

2. Azure Kubernetes Service (AKS)

AKS完全支持多容器多端口部署需求:

  • 编写K8s Deployment配置,在Pod中定义Redis和Python两个容器并配置对应端口;
  • 通过Service资源暴露Python的8080/8050端口(可选择LoadBalancer或NodePort类型),Redis仅需配置ClusterIP服务供内部访问;
  • 可搭配Ingress统一管理外部访问路由。

3. Azure Web App折中方案

若坚持使用Web App,可通过以下方式绕过端口限制:

  • 在Web App多容器部署中,将WEBSITES_PORT设为8080作为主端口;
  • 修改Python服务逻辑,将文件上传请求通过主端口(8080)转发至容器内部的8050端口,无需暴露第二个公网端口;
  • 若必须暴露8050,可通过VNet集成或私人端点实现内部访问,无法直接通过公网访问该端口。

内容的提问来源于stack exchange,提问作者AdamCodes716

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:53:14