php-Editor Strawberry stellt Ihnen vor, wie Sie ein privates Repository in einem Docker-Container zur Authentifizierung verwenden. Docker ist eine beliebte Containerisierungsplattform, die Entwicklern hilft, Anwendungen schnell in verschiedenen Umgebungen bereitzustellen und auszuführen. Bei einigen sensiblen Anwendungen oder privaten Codebasen müssen wir jedoch möglicherweise das Repository im Container authentifizieren, um sicherzustellen, dass nur autorisiertes Personal darauf zugreifen kann. In diesem Artikel erfahren Sie, wie Sie die Authentifizierung für private Repositorys einrichten und verwenden, um Ihre sensiblen Daten und Ihren Code zu schützen.
Ich habe ein Git-Repository, das ein privates Repository ist, und ich muss mich bei diesem authentifizieren und es in der container build
视角中查看它。有关一些背景信息,我有一个 github 工作流程,用于构建容器映像并将其发布到 ghcr.io
-Registrierung ausführen können. Da das Repository, von dem mein Paket abhängt, jedoch privat ist, funktioniert es nicht. Da es nun lokal funktioniert, habe ich darüber nachgedacht, die Art und Weise, wie die Github-Authentifizierung gespeichert wird, zu ändern, um mir den Zugriff darauf zu ermöglichen, aber ich habe mich gefragt, ob jemand eine bessere Möglichkeit für mich kennt, auf das private Repository zuzugreifen. p>
Das Folgende ist die Github-Aktion zum Veröffentlichen in der ghcr.io
-Registrierung:
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}}
Das ist 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" ]
Ich denke, der größte Teil, der mich verwirrt, ist dieser, aber ich frage mich, ob es einen besseren Weg gibt, es zu tun:
# make git configuration run git config \ --global \ url."https://${github_id}:${github_token}@github.com/".insteadof \ "https://github.com/"
So greifen Sie auf private Repositories zu und vermeiden die folgenden Fehler in Ihrem Workflow:
#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
In dockerfile
中,为了使用操作传递的密钥(称为 token
sollten Sie Folgendes ausführen, um den von der Operation übergebenen Schlüssel (genannt token
) zu verwenden:
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/"
Denken Sie daran, github_id
auch an die Docker-Datei zu übergeben
Das obige ist der detaillierte Inhalt vonSo authentifizieren Sie sich mithilfe eines privaten Repositorys in einem Docker-Container. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!