Anda telah membangunkan pakej Python yang hebat untuk menyediakan penggunaan dalaman syarikat. Anda ingin menerbitkannya supaya rakan sekerja anda dapat menggunakannya. Kerana pakej hanya untuk kegunaan dalaman, ia tidak dapat diterbitkan di PYPI (Registry Pakej Python Resmi). Sebaliknya, kerana syarikat anda menggunakan GCP, pilihan semulajadi adalah pendaftaran artifak.
Seperti yang diterangkan dalam dokumen, sangat mudah untuk menerbitkan pakej ke pendaftaran.
库
Saya menggunakan perpustakaan pembungkusan puisi. Berikut adalah beberapa arahan yang akan anda gunakan:
Selepas menyiarkan beg anda ke Registry Artifak, anda boleh memberikannya sebagai item yang bergantung kepada projek lain.
poetry source add --priority=supplemental gcp_registry https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/
poetry publish --no-interaction --build --repository gcp_registry
Salin selepas log masuk
pakej pemasangan <<>
Memasang pakej pada mesin tempatan, sila buat fail keperluan_private.txt:
Kemudian, gunakan arahan berikut untuk memasang pakej:
<code>--index-url https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/simple/
--extra-index-url https://pypi.org/simple
{YOUR_PACKAGE_NAME}</code>
Salin selepas log masuk
Salin selepas log masuk
Pengesahan Pakej Pakej Pakaian KeyRing Artefact Registry. Pastikan aplikasi anda lalai ke aplikasi (ADC) sebelum meneruskan.
pip install keyring
pip install keyrings.google-artifactregistry-auth
pip install -r /opt/requirements_private.txt
Salin selepas log masuk
Docker Challenge
Semasa menjalankan aplikasi di Docker, anda akan menghadapi cabaran lain:
Anda tidak mahu menyalin maklumat sensitif (seperti fail akaun perkhidmatan anda) ke cermin Docker.
anda masih perlu menggunakan registri artifak untuk pengesahan. -
- Penyelesaiannya adalah mudah, tetapi tidak ada rekod dokumen yang baik. Saya mengambil masa beberapa hari untuk memikirkannya, jadi saya ingin menjimatkan masa anda dan membantu anda merealisasikannya dalam beberapa minit.
Penyelesaian <解>
Melewati pembolehubah persekitaran Google_applications_credentials semasa tempoh pembinaan Docker, menunjuk ke laluan fail akaun perkhidmatan (bukannya kandungan fail itu sendiri).
Fail akaun perkhidmatan dipasang secara rahsia di bawah jalan yang ditentukan oleh Google_application_credentials.
- Semua operasi dilakukan dalam pernyataan Run yang sama, termasuk memasang beg keyring dan kebergantungan peribadi. Ini penting kerana pemasangan fail hanya wujud dalam konteksnya.
- Pastikan anda mempunyai kuasa yang sesuai untuk membaca fail.
-
Contoh Dockerfile -
Berikut adalah penampilan Dockerfile anda:
keperluan_private.txt masih sama.
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
Salin selepas log masuk
Seperti yang anda lihat, anda boleh mempunyai pelbagai fail keperluan. Dalam contoh saya, fail keperluan.txt digunakan untuk menjadi tuan rumah pakej dalam pendaftaran awam PYPI.
Maka fail docker_compose.yml anda
<code>--index-url https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/simple/
--extra-index-url https://pypi.org/simple
{YOUR_PACKAGE_NAME}</code>
Salin selepas log masuk
Salin selepas log masuk
maka anda boleh menjalankan perintah membina:
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"
Salin selepas log masuk
Saya harap artikel ini akan membantu anda diintegrasikan dengan Registry dan Docker Artifak.
Atas ialah kandungan terperinci Cara Memasang Pakej Python dari GCP Artifact Registry dalam Fail Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!