Azure 容器实例在 Python 应用程序中不显示实时日志

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

我有一个在底层使用 Azure 服务总线的 Python 脚本。它是一个模拟,因此它使用 Pub Sub 和主题通过服务总线进行通信,并打印有关某些事件的信息。

我制作了一个 Dockerfile,用于安装所有要求、从 Azure 设置 ENV 变量并运行启动模拟的文件。

当我使用

docker run <image>
在本地运行 Docker 映像时,它什么也不做,直到运行完成,然后它会吐出所有日志。

当我使用

docker run -it <image>
在本地运行 Docker 镜像时,我可以一一看到所有日志。

我将映像推送到 Azure 容器注册表,并使用该映像创建了一个 Docker 容器实例。当我运行容器并使用

az container logs <rg> <name>
az container attach <rg> <name>
时,它不会像使用
docker run -it
命令那样显示日志,而是在模拟全部完成后将其吐出。

可以实时查看日志吗?

我尝试的是通过在 Azure 中按“播放”来运行容器实例,然后在“日志”选项卡中查看日志。但是当容器运行时,它会说:“没有可用的日志”。然后我尝试了上面提到的 Azure Cloud Shell 命令,但它仍然不显示日志。

logging containers azure-log-analytics docker-image azure-container-instances
1个回答
0
投票

检查您是否使用像

logging
这样的日志库,并将其配置为将日志输出到 STDOUT 或 STDERR。您可以通过在脚本开头或配置日志记录的任何位置添加以下行来完成此操作:

    import sys
    import logging
    
    # Configure logging to output to STDOUT
    logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

确保脚本生成的任何日志都是使用

logging
模块写入的。

更新 Dockerfile 以包含复制 Python 脚本和任何其他必要文件、安装依赖项以及根据需要设置环境变量的说明。 Dockerfile:

    FROM python:3.9
    
    # Set working directory
    WORKDIR /app
    
    # Copy requirements file
    COPY requirements.txt .
    
    # Install dependencies
    RUN pip install --no-cache-dir -r requirements.txt
    
    # Copy the Python script
    COPY your_script.py .
    
    # Set environment variables if needed
    ENV VARIABLE_NAME=value
    
    # Command to run the Python script
    CMD ["python", "your_script.py"]

在项目目录中构建Docker镜像。

docker build -t your_image_name .

  • 使用以下命令将 Docker 映像推送到 Azure 容器注册表:

docker push your_registry_name.azurecr.io/your_image_name:tag

  • 使用您推送到 ACR 的 Docker 映像创建 Azure 容器实例。您可以使用 Azure CLI 或 Azure 门户来创建 ACI。
az container create \
      --resource-group your_resource_group \
      --name your_container_name \
      --image your_registry_name.azurecr.io/your_image_name:tag \
      --cpu 1 \
      --memory 1.5 \
      --restart-policy OnFailure \
      --dns-name-label your_dns_name_label \
      --ports 80
  • 容器运行后,您可以使用以下 Azure CLI 命令实时查看日志:
az container logs --resource-group your_resource_group --name your_container_name

日志: enter image description here

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