editor php Strawberry memperkenalkan anda cara menggunakan repositori peribadi dalam bekas Docker untuk pengesahan. Docker ialah platform kontena popular yang membantu pembangun menggunakan dan menjalankan aplikasi dengan cepat dalam persekitaran yang berbeza. Walau bagaimanapun, untuk sesetengah aplikasi sensitif atau pangkalan kod peribadi, kami mungkin perlu mengesahkan repositori dalam bekas untuk memastikan bahawa hanya kakitangan yang diberi kuasa boleh mengaksesnya. Artikel ini akan menunjukkan kepada anda cara menyediakan dan menggunakan pengesahan untuk repositori peribadi untuk melindungi data dan kod sensitif anda.
Saya mempunyai repositori git yang merupakan repositori peribadi dan saya perlu dapat mengesahkannya dan dapat menjalankannya dalam container build
视角中查看它。有关一些背景信息,我有一个 github 工作流程,用于构建容器映像并将其发布到 ghcr.io
pendaftaran. Walau bagaimanapun, kerana repositori yang bergantung pada pakej saya adalah peribadi, ia tidak berfungsi. Memandangkan ia berfungsi secara tempatan, saya telah mempertimbangkan untuk mengubah cara pengesahan github disimpan untuk membolehkan saya mengaksesnya, tetapi saya tertanya-tanya sama ada sesiapa tahu cara yang lebih baik untuk saya mengakses repositori peribadi. p>
Berikut ialah tindakan github untuk diterbitkan ke ghcr.io
pendaftaran:
name: docker dataeng_github_metrics # run workflow on tags starting with v (eg. v2, v1.2.0) on: push: branches: [ "master" ] paths: - ./data_pipelines/dataeng_github_metrics/* pull_request: branches: [ "master" ] jobs: deploy: runs-on: ubuntu-latest steps: - name: checkout code uses: actions/checkout@v1 - name: login to github container registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.ghcr_registry_token }} - name: set up docker buildx uses: docker/setup-buildx-action@v2 - name: build and push docker image uses: docker/build-push-action@v3 with: context: ./data_pipelines/dataeng_github_metrics/ file: ./data_pipelines/dataeng_github_metrics/dockerfile push: true # will only build if this is not here tags: | ghcr.io/mirantis/dataeng_github_metrics:latest # todo: i cannot use dataeng as public and need to change the way gitconfig is used in the dockerfile for authentication secrets: | token=${{ secrets.automation_pat}}
Ini ialah dockerfile
:
############### # cache image # ############### arg go_image=golang:1.17.3-alpine3.14 arg base_image=alpine:3.14.2 from ${go_image} as cache # add the keys arg github_id env github_id=$github_id arg github_token env github_token=$github_token # install git run apk add git # todo: encrypt the github_id and github_token # make git configuration run git config \ --global \ url."https://${github_id}:${github_token}@github.com/".insteadof \ "https://github.com/" workdir /src copy go.mod go.sum /src/ run go mod download ############## # base image # ############## from cache as dataeng_github_metrics copy . /bin workdir /bin # setup git terminal prompt & go build run go build . ############### # final image # ############### from ${base_image} copy --from=dataeng_github_metrics /bin/dataeng_github_metrics bin/ entrypoint [ "bin/dataeng_github_metrics" ]
Saya rasa bahagian besar yang mengelirukan saya ialah ini, tetapi tertanya-tanya jika ada cara yang lebih baik untuk melakukannya:
# make git configuration run git config \ --global \ url."https://${github_id}:${github_token}@github.com/".insteadof \ "https://github.com/"
Cara untuk mengakses repositori peribadi dan mengelakkan ralat berikut dalam aliran kerja anda:
#14 9.438 remote: Repository not found. #14 9.438 fatal: Authentication failed for 'https://github.com/Mirantis/dataeng/' ------ Dockerfile:26 -------------------- 24 | WORKDIR /src 25 | COPY go.mod go.sum /src/ 26 | >>> RUN go mod download 27 | 28 | ############## -------------------- ERROR: failed to solve: process "/bin/sh -c go mod download" did not complete successfully: exit code: 1 Error: buildx failed with: ERROR: failed to solve: process "/bin/sh -c go mod download" did not complete successfully: exit code: 1
Dalam dockerfile
中,为了使用操作传递的密钥(称为 token
, untuk menggunakan kunci yang diluluskan oleh operasi (dipanggil token
), anda harus menjalankan seperti berikut:
RUN --mount=type=secret,id=TOKEN \ echo "machine github.com login x password $(head -n 1 /run/secrets/TOKEN)" > ~/.netrc && \ git config \ --global \ url."https://${GITHUB_ID}:${TOKEN}@github.com/".insteadOf \ "https://github.com/"
Ingat untuk menghantar github_id
ke fail docker juga
Atas ialah kandungan terperinci Bagaimana untuk mengesahkan menggunakan repositori peribadi dalam bekas Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!