您開發了一個很棒的Python包供公司內部使用。您希望發布它,以便您的同事可以開始使用它。由於該包僅供內部使用,因此無法在PyPI(官方Python包註冊表)上發布它。相反,由於您的公司使用GCP,因此自然的選擇是Artifact Registry。
如文檔所述,將包發佈到註冊表非常簡單。
我使用Poetry打包庫。以下是一些您將使用的命令:
<code class="language-bash">poetry source add --priority=supplemental gcp_registry https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/ poetry publish --no-interaction --build --repository gcp_registry</code>
將您的包發佈到Artifact Registry後,您可以將其作為其他項目的依賴項提供。
要在本地機器上安裝包,請創建一個requirements_private.txt文件:
<code>--index-url https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/simple/ --extra-index-url https://pypi.org/simple {YOUR_PACKAGE_NAME}</code>
然後,使用以下命令安裝包:
<code class="language-bash">pip install keyring pip install keyrings.google-artifactregistry-auth pip install -r /opt/requirements_private.txt</code>
keyring包處理Artifact Registry身份驗證。確保在繼續之前設置了您的應用程序默認憑據(ADC)。
在Docker中運行應用程序時,您會面臨其他挑戰:
解決方案很簡單,但沒有很好的文檔記錄。我花了幾天時間才弄清楚這一點,所以我想節省您的時間,並幫助您在幾分鐘內實現它。
以下是您的Dockerfile的外觀:
<code class="language-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</code>
requirements_private.txt仍然相同。
<code>--index-url https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/simple/ --extra-index-url https://pypi.org/simple {YOUR_PACKAGE_NAME}</code>
如您所見,您可以有多個requirements文件。在我的例子中,requirements.txt文件用於託管在pypi公共註冊表中的包。 然後是您的docker_compose.yml文件
<code class="language-yaml">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"</code>
然後您可以運行構建命令:
<code class="language-bash">docker compose build</code>
希望本文能幫助您與Artifact Registry和Docker集成。
以上是如何在Docker文件中從GCP Artifact註冊表中安裝Python軟件包的詳細內容。更多資訊請關注PHP中文網其他相關文章!