登录
首页 >  文章 >  python教程

如何在Docker文件中从GCP Artifact注册表中安装Python软件包

时间:2025-01-29 08:10:03 483浏览 收藏

本篇文章给大家分享《如何在Docker文件中从GCP Artifact注册表中安装Python软件包》,覆盖了文章的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

本文介绍如何使用Docker构建镜像,并从GCP Artifact Registry安装私有Python包,避免将敏感的服务帐户密钥直接放入镜像中。

如何在Docker文件中从GCP Artifact注册表中安装Python软件包

您已开发一个内部使用的Python包,并希望将其发布到GCP Artifact Registry,而不是PyPI。 本文提供了一种安全的方案,避免在Docker镜像中直接包含服务帐户密钥文件。

包发布:

使用Poetry发布包到Artifact Registry:

poetry source add --priority=supplemental gcp_registry https://{location}-python.pkg.dev/{repo}/{package}/
poetry publish --no-interaction --build --repository gcp_registry

本地安装:

在本地安装包,需要创建一个requirements_private.txt文件:

--index-url https://{location}-python.pkg.dev/{repo}/{package}/simple/
--extra-index-url https://pypi.org/simple
{your_package_name}

然后执行以下命令安装:

pip install keyring
pip install keyrings.google-artifactregistry-auth
pip install -r /opt/requirements_private.txt

keyringkeyrings.google-artifactregistry-auth包用于处理Artifact Registry的身份验证。请确保已设置应用程序默认凭据(ADC)。

Docker构建:

关键在于使用Docker secrets管理服务帐户密钥,并通过环境变量google_application_credentials指定密钥路径。

Dockerfile示例:

ARG google_application_credentials

COPY requirements_private.txt /opt/requirements_private.txt

RUN --mount=type=secret,id=creds,target=/opt/mykey.json,mode=0444 \
    pip install keyring && \
    pip install keyrings.google-artifactregistry-auth && \
    pip install -r /opt/requirements_private.txt

COPY requirements.txt /opt/requirements.txt
RUN pip install -r /opt/requirements.txt

requirements_private.txt内容同上。 您可以使用另一个requirements.txt文件来安装来自PyPI的公共依赖项。

docker-compose.yml示例:

services:
  app:
    build:
      context: .
      args:
        - google_application_credentials=/opt/mykey.json
      secrets:
        - creds

secrets:
  creds:
    file: "c:/your/local/host/path/to/google_service_account.json" # 请替换为您的本地密钥文件路径

执行docker compose build构建镜像。 此方法将服务帐户密钥安全地存储为Docker secret,并在构建过程中通过环境变量传递给应用程序,从而避免密钥泄露。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>