Docker Azure 逻辑应用程序中的 python 脚本未连接到当前 Azure blob 存储的问题

Docker issue with python script in Azure logic app not connecting to current Azure blob storage

每天,Excel 文件都会自动上传到我的 Azure blob 存储帐户。我有一个 Python 脚本,它读取 Excel 文件,提取必要的信息,并将输出保存为 Azure 存储帐户中的新 blob。我设置了一个 Docker 容器来 运行 这个 Python 脚本。它在 运行 本地时正常工作。

我将 Docker 图像推送到 Azure 容器注册表,并尝试设置一个 Azure 逻辑应用程序,每天在同一时间用这个 Docker 图像启动一个容器。 运行s,但是,它似乎无法使用我的 Azure 存储帐户的最新版本。

比如我昨晚推送了更新版的Docker图片。今天早上将一个新的 Excel 文件添加到 Azure 存储帐户,并在一小时后添加到逻辑应用程序 运行。然而,带有 Docker 图像的容器只找到了昨天存在于 Azure 存储帐户中的文件(因此它缺少最新的文件,这是我需要分析的文件)。

我确认问题不在于逻辑应用程序,因为我在逻辑应用程序中添加了一个步骤来列出 Azure 存储帐户中的文件,并且该列表包括最新的文件。

更新:我已确认我正在访问正确版本的环境变量。问题仍然存在:Docker 容器似乎访问 Azure blob 存储,就像我最近将 Docker 图像推送到容器注册表时一样。我目前的解决方法是每天将相同的图像推送到注册表,但这很烦人。

另一项更新:这是获取最新 blob(Excel 文件)的代码。日期始终包含在 blob 的名称中。理论上,它会找到最近日期的 blob:

blobs = blob_service.list_blobs(container_name=os.environ.get("CONTAINERNAME"))

blobstring = blob_service.get_blob_to_text(os.environ.get("CONTAINERNAME"),
                                           backup_csv).content
current_df = pd.read_csv(StringIO(blobstring))

add_n = 1

blob_string = re.compile("sales.xls")
for b in blobs:
    if blob_string.search(b.name):
        dt = b.name[14:24]
        dt = datetime.strptime(dt, "%Y-%m-%d").date()
        date_list.append(dt)

today = max(date_list)
print(today)

但是,blob 似乎没有更新。它 returns 是我上次将图像推送到注册表的日期的最新 blob。

我还在同一个脚本中检查了 print(date.today()),这按预期工作(打印当前日期)。

发现我只需要在我的 .env 文件中创建所有变量,并将它们作为具有适当值的环境变量添加到上图的 'containers environment' 部分。 https://docs.microsoft.com/en-us/azure/container-instances/container-instances-environment-variables 是有用的资源。

还需要删除容器组作为逻辑应用中的最后一个操作。我命名了错误的容器组,所以当逻辑应用程序每天 运行 时,它使用容器的缓存版本。