本文介绍如何使用docker构建镜像,并从gcp artifact registry安装私有python包,避免将敏感的服务帐户密钥直接放入镜像中。

您已开发一个内部使用的Python包,并希望将其发布到GCP Artifact Registry,而不是PyPI。 本文提供了一种安全的方案,避免在Docker镜像中直接包含服务帐户密钥文件。
包发布:
使用Poetry发布包到Artifact Registry:
立即学习“Python免费学习笔记(深入)”;
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
keyring和keyrings.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.txtrequirements_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,并在构建过程中通过环境变量传递给应用程序,从而避免密钥泄露。
以上就是如何在Docker文件中从GCP Artifact注册表中安装Python软件包的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号