我们有一个带有 vnet 的天蓝色基础设施。
我们有一个 Gradel 应用程序和一个 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"]
docker 文件在本地实例(计算/机器)上正常构建并运行。 devops 管道构建并推送 docker 镜像正常,另一个管道使用容器部署 Web 应用程序:
一切看起来都很好,直到我们尝试查看网络应用程序的日志流。在那里,除了这一行之外,一切似乎都很好:
2024-11-27T09:10:07.6520207Z 错误 conda.cli.main_run:执行(125):
失败了。 (参见上文 错误)/home/LogFiles/2024_11_27_lw0sdlwk0006T6_default_scm_docker.log (https://somename-dev.scm.azurewebsites.net/api/vfs/LogFiles/2024_11_27_lw0sdlwk0006T6_default_scm_docker.log)
conda run python -m app --port 8081
我们已将 WEBSITE_PORT: 8081 添加到 Web 应用程序服务中的环境变量中:
我无法找到这个 docker 命令失败的原因,已经到处查看了。
如果有人可以帮忙,我将不胜感激!
P.s 使用普通的 ubuntu 最新代理构建 docker 并将其推送到 vnet 集成 acr Web 应用程序是使用自托管代理部署的。
命令: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
给出了这个:
日志表明应用程序正在侦听
0.0.0.0:8181
而不是 8081
。这可能是问题的根本原因,其中 Azure 希望应用程序侦听由 WEBSITE_PORT
定义的端口(设置为 8081
)。
应用程序应绑定到端口
8081
,尤其是在 Azure 中运行时。您正在使用 conda run
启动应用程序,您可能需要在 Py 代码中显式地将正确的端口传递给应用程序,特别是当它使用 FastAPI 或 Flask 等框架时。
在 Azure Web App 中正确设置
WEBSITE_PORT
环境变量,并将其公开在 Dockerfile 中。
检查下面的
CMD
声明:
CMD ["bash", "-c", "conda run --no-capture-output -n abs-env python -m app --port $WEBSITE_PORT"]
chmod:更改“/temp”的权限:操作不..一些配置
/temp
的任何引用更改为 /tmp
。这是基于 Linux 的系统中临时文件的常见位置。更新了 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
# Install dependencies and validate environment
RUN source /opt/miniconda/etc/profile.d/conda.sh && \
conda install conda && \
pip install cmake && \
conda env update -f sss_env.yml && \
conda env list
EXPOSE 8081
# Ensure the app uses the correct port from the environment variable
CMD ["conda", "run", "--no-capture-output", "-n", "abs-env", "python", "-m", "app", "--port", "8081"]