l'éditeur php Strawberry vous présente comment utiliser un référentiel privé dans un conteneur Docker pour l'authentification. Docker est une plate-forme de conteneurisation populaire qui aide les développeurs à déployer et exécuter rapidement des applications dans différents environnements. Cependant, pour certaines applications sensibles ou bases de codes privées, nous devrons peut-être authentifier le référentiel dans le conteneur pour garantir que seul le personnel autorisé puisse y accéder. Cet article vous montrera comment configurer et utiliser l'authentification pour les référentiels privés afin de protéger vos données et votre code sensibles.
J'ai un référentiel git qui est un référentiel privé et je dois pouvoir m'authentifier auprès de celui-ci et pouvoir l'exécuter dans le container build
视角中查看它。有关一些背景信息,我有一个 github 工作流程,用于构建容器映像并将其发布到 ghcr.io
registre. Cependant, comme le référentiel dont dépend mon package est privé, cela ne fonctionne pas. Maintenant que cela fonctionne localement, j'ai envisagé de changer la façon dont l'authentification github est stockée pour me permettre d'y accéder, mais je me demandais si quelqu'un connaissait un meilleur moyen pour moi d'accéder au référentiel privé. p>
Voici l'action github à publier dans le registre ghcr.io
:
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}}
C'est 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" ]
Je pense que la grande partie qui me déroute est la suivante, mais je me demande s'il existe une meilleure façon de le faire :
# make git configuration run git config \ --global \ url."https://${github_id}:${github_token}@github.com/".insteadof \ "https://github.com/"
Comment accéder aux référentiels privés et éviter les erreurs suivantes dans votre 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
Dans dockerfile
中,为了使用操作传递的密钥(称为 token
, afin d'utiliser la clé transmise par l'opération (appelée token
), vous devez exécuter comme suit :
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/"
N'oubliez pas de transmettre également github_id
au dockerfile
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!