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

Azure Web App Service容器Docker启动失败排查求助

问题描述

我们的Azure基础设施包含VNet,现有一个Gradle应用,对应的Dockerfile如下:

FROM mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04

RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN echo "source /opt/miniconda/etc/profile.d/conda.sh && \
    conda activate" >> ~/.bashrc

COPY logic/ /app/logic
COPY assets/ /app/assets
COPY utils/ /app/utils
COPY python_specs/sss_env.yml /app
COPY app.py /app

WORKDIR /app

RUN source /opt/miniconda/etc/profile.d/conda.sh && \
    conda activate && \
    conda install conda && \
    pip install cmake && \
    conda env update -f sss_env.yml

EXPOSE 8080
# conda:
CMD ["conda", "run", "--no-capture-output", "-n", "sss-env", "python", "-m", "app", "--port", "8081"]

该镜像在本地可正常构建运行,DevOps流水线也能成功构建推送镜像,但部署Web App容器后,日志流显示如下错误:

2024-11-27T09:10:07.6520207Z ERROR conda.cli.main_run:execute(125):
conda run python -m app --port 8081 failed. (See above for error)/home/LogFiles/2024_11_27_lw0sdlwk0006T6_default_scm_docker.log

我们已在Web App服务的环境变量中添加WEBSITE_PORT: 8081,但无法定位Docker命令失败的原因,需要协助排查。

补充信息

  • 镜像通过ubuntu-latest Agent构建并推送到VNet集成的ACR
  • Web App通过自托管Agent部署
  • 构建时执行RUN conda env list && conda list -n sss-env的输出如下:
# conda environments:
#
base                 * /opt/miniconda
abs-env                /opt/miniconda/envs/abs-env

# packages in environment at /opt/miniconda/envs/abs-env:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
aiofiles                  23.2.1                   pypi_0    pypi
annotated-types           0.7.0                    pypi_0    pypi
anyio                     4.6.2.post1              pypi_0    pypi
bzip2                     1.0.8                h4bc722e_7    conda-forge
ca-certificates           2024.8.30            hbcca054_0    conda-forge
certifi                   2024.8.30                pypi_0    pypi
charset-normalizer        3.4.0                    pypi_0    pypi
click                     8.1.7                    pypi_0    pypi
contourpy                 1.3.1                    pypi_0    pypi
cycler                    0.12.1                   pypi_0    pypi
et-xmlfile                2.0.0                    pypi_0    pypi
exceptiongroup            1.2.2                    pypi_0    pypi
faiss                     1.7.2           py310hd7ef7d9_4_cpu    conda-forge
faiss-cpu                 1.7.2                h718b53a_4    conda-forge
fastapi                   0.115.5                  pypi_0    pypi
ffmpy                     0.4.0                    pypi_0    pypi
filelock                  3.16.1                   pypi_0    pypi
fonttools                 4.55.0                   pypi_0    pypi
fsspec                    2024.10.0                pypi_0    pypi
gradio                    5.1.0                    pypi_0    pypi
gradio-client             1.4.0                    pypi_0    pypi
h11                       0.14.0                   pypi_0    pypi
httpcore                  1.0.7                    pypi_0    pypi
httpx                     0.27.2                   pypi_0    pypi
huggingface-hub           0.26.2                   pypi_0    pypi
idna                      3.10                     pypi_0    pypi
intel-openmp              2022.0.1          h06a4308_3633  
jinja2                    3.1.4                    pypi_0    pypi
joblib                    1.4.2                    pypi_0    pypi
kiwisolver                1.4.7                    pypi_0    pypi
ld_impl_linux-64          2.43                 h712a8e2_2    conda-forge
libblas                   3.9.0           25_linux64_openblas    conda-forge
libcblas                  3.9.0           25_linux64_openblas    conda-forge
libfaiss                  1.7.2            h2bc3f7f_0_cpu    pytorch
libfaiss-avx2             1.7.2            h1234567_4_cpu    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc                    14.2.0               h77fa898_1    conda-forge
libgcc-ng                 14.2.0               h69a702a_1    conda-forge
libgfortran               14.2.0               h69a702a_1    conda-forge
libgfortran5              14.2.0               hd5240d6_1    conda-forge
libgomp                   14.2.0               h77fa898_1    conda-forge
liblapack                 3.9.0           25_linux64_openblas    conda-forge
libnsl                    2.0.1                hd590300_0    conda-forge
libopenblas               0.3.28          pthreads_h94d23a6_1    conda-forge
libsqlite                 3.47.0               hadc24fc_1    conda-forge
libstdcxx                 14.2.0               hc0a3c3a_1    conda-forge
libstdcxx-ng              14.2.0               h4852527_1    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libxcrypt                 4.4.36               hd590300_1    conda-forge
libzlib                   1.3.1                hb9d3cd8_2    conda-forge
markdown-it-py            3.0.0                    pypi_0    pypi
markupsafe                2.1.5                    pypi_0    pypi
matplotlib                3.7.1                    pypi_0    pypi
mdurl                     0.1.2                    pypi_0    pypi
mkl                       2022.1.0           hc2b9512_224  
ncurses                   6.5                  he02047a_1    conda-forge
numpy                     1.26.4          py310hb13e2d6_0    conda-forge
openpyxl                  3.1.5                    pypi_0    pypi
openssl                   3.4.0                hb9d3cd8_0    conda-forge
orjson                    3.10.12                  pypi_0    pypi
packaging                 24.2                     pypi_0    pypi
pandas                    2.0.0                    pypi_0    pypi
pillow                    10.4.0                   pypi_0    pypi
pip                       22.3.1             pyhd8ed1ab_0    conda-forge
pydantic                  2.10.1                   pypi_0    pypi
pydantic-core             2.27.1                   pypi_0    pypi
pydub                     0.25.1                   pypi_0    pypi
pygments                  2.18.0                   pypi_0    pypi
pyparsing                 3.2.0                    pypi_0    pypi
python                    3.10.15         h4a871b0_2_cpython    conda-forge
python-dateutil           2.9.0.post0              pypi_0    pypi
python-multipart          0.0.17                   pypi_0    pypi
python_abi                3.10                    5_cp310    conda-forge
pytz                      2024.2                   pypi_0    pypi
pyyaml                    6.0.2                    pypi_0    pypi
readline                  8.2                  h8228510_1    conda-forge
requests                  2.32.3                   pypi_0    pypi
rich                      13.9.4                   pypi_0    pypi
ruff                      0.8.0                    pypi_0    pypi
scikit-learn              1.5.2                    pypi_0    pypi
scipy                     1.14.1                   pypi_0    pypi
seaborn                   0.12.2                   pypi_0    pypi
semantic-version          2.10.0                   pypi_0    pypi
setuptools                75.6.0             pyhff2d567_0    conda-forge
shellingham               1.5.4                    pypi_0    pypi
six                       1.16.0                   pypi_0    pypi
sniffio                   1.3.1                    pypi_0    pypi
starlette                 0.41.3                   pypi_0    pypi
stringcase                1.2.0                    pypi_0    pypi
threadpoolctl             3.5.0                    pypi_0    pypi
tk                        8.6.13          noxft_h4845f30_101    conda-forge
tomlkit                   0.12.0                   pypi_0    pypi
tqdm                      4.67.1                   pypi_0    pypi
typer                     0.13.1                   pypi_0    pypi
typing-extensions         4.12.2                   pypi_0    pypi
tzdata                    2024.2                   pypi_0    pypi
urllib3                   2.2.3                    pypi_0    pypi
uvicorn                   0.32.1                   pypi_0    pypi
websockets                12.0                     pypi_0    pypi
wheel                     0.45.1             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
排查建议

1. 修正conda环境名称不匹配问题

从构建日志的conda env list输出看,实际创建的conda环境是abs-env,但Dockerfile的CMD命令里指定的是sss-env,这是核心错误:

  • 检查sss_env.yml文件,确认其中的name字段是否设置为abs-env
  • 修改CMD命令中的环境名称为abs-env:
    CMD ["conda", "run", "--no-capture-output", "-n", "abs-env", "python", "-m", "app", "--port", "8081"]
    

2. 解决非交互式shell的conda加载问题

Azure Web App运行容器时默认使用非交互式shell,~/.bashrc中的conda初始化脚本不会自动执行,可能导致conda命令无法正常识别:

  • 直接使用conda的完整路径执行命令,避免依赖shell初始化:
    CMD ["/opt/miniconda/bin/conda", "run", "--no-capture-output", "-n", "abs-env", "python", "-m", "app", "--port", "8081"]
    
  • 或者切换到shell模式执行,确保conda环境正常加载:
    CMD ["/bin/bash", "-c", "source /opt/miniconda/etc/profile.d/conda.sh && conda activate abs-env && python -m app --port 8081"]
    

3. 获取应用启动的详细错误信息

当前日志仅提示命令失败,未显示具体错误内容,可通过以下方式排查:

  • 修改CMD命令移除--no-capture-output参数,让错误信息直接输出到日志:
    CMD ["conda", "run", "-n", "abs-env", "python", "-m", "app", "--port", "8081"]
    
  • 通过Azure门户或az webapp ssh命令登录Web App容器实例,手动执行启动命令,查看具体报错:
    source /opt/miniconda/etc/profile.d/conda.sh
    conda activate abs-env
    python -m app --port 8081
    

4. 统一端口配置

  • Dockerfile中EXPOSE 8080与应用启动端口8081不一致,建议修改为EXPOSE 8081,保持配置统一
  • 确认应用代码是否正确读取--port参数,是否存在硬编码端口的情况

5. 验证ACR镜像一致性

虽然本地构建正常,但需确保流水线构建的镜像与本地一致:

  • 在流水线中增加验证步骤,检查镜像内的conda环境名称和文件结构
  • 从ACR拉取镜像到本地测试运行,确认是否能正常启动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:15:56