如何使用 Docker 容器中的私有存储库进行身份验证
php小编草莓为您介绍如何使用 Docker 容器中的私有存储库进行身份验证。Docker 是一种流行的容器化平台,能够帮助开发人员在不同的环境中快速部署和运行应用程序。然而,对于一些敏感的应用程序或者私有的代码库,我们可能需要对容器中的存储库进行身份验证,以确保只有授权的人员可以访问。本文将向您展示如何设置和使用私有存储库的身份验证,以保护您的敏感数据和代码。
问题内容
我有一个 git 存储库,它是一个私有存储库,我需要能够对其进行身份验证,并能够在运行时在 container build
视角中查看它。有关一些背景信息,我有一个 github 工作流程,用于构建容器映像并将其发布到 ghcr.io
注册表。但是,因为我的包依赖的存储库是私有的,所以它不起作用。现在它可以在本地运行,我考虑过更改存储 github 身份验证的方式以允许我访问它,但我想知道是否有人知道更好的方法让我访问私有存储库。 p>
以下是发布到 ghcr.io
注册表的 github 操作:
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}}
这是 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" ]
我认为让我困惑的重要部分是这个,但想知道是否有更好的方法来实现它:
# make git configuration run git config \ --global \ url."https://${github_id}:${github_token}@github.com/".insteadof \ "https://github.com/"
如何访问私有存储库并避免工作流程中出现以下错误:
#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
解决方法
在 dockerfile
中,为了使用操作传递的密钥(称为 token
中,为了使用操作传递的密钥(称为 token
),您应该按以下方式运行:
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/"
记得将 github_id
也传递给 dockerfile
以上是如何使用 Docker 容器中的私有存储库进行身份验证的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

用户在抖音不仅可以观看各种有趣的短视频,还可以发布自己拍摄的作品,与全国乃至全球的网友互动。在这个过程中,抖音的IP地址显示功能引起了广泛关注。一、抖音的IP地址是怎么显示的?抖音的IP地址显示功能主要是通过地理位置定位服务实现的。当用户在抖音上发布或观看视频时,抖音会自动获取用户的地理位置信息。这一过程主要分为以下几个步骤:首先,用户启用抖音应用程序并允许应用程序访问其地理位置信息;其次,抖音使用定位服务获取用户的地理位置信息;最后,抖音将用户的地理位置信息与其发布或观看的视频数据相关联,并将

作为互联网计算机 (IC) 协议的原生代币,ICP 币提供一系列独特的价值和用途,包括存储价值、网络治理、数据存储和计算,以及激励节点运营。 ICP 币被认为是一种有潜力的加密货币,其可信度和价值随着 IC 协议的采用而增长。此外,ICP 币在 IC 协议的治理中发挥重要作用,持币者可以参与投票和提案的提交,影响协议的发展。

SQL 中的 表示所有列,它用于简单地选择表中的所有列,语法为 SELECT FROM table_name;。使用 的优点包括简洁、方便和动态适应,但同时要注意性能、数据安全和可读性。此外, 还可用于连接表和子查询。

简介:对于需要大批量复制数据的企业和个人来说,高效便捷的U盘量产工具是必不可少的。金士顿推出的U盘量产工具,以其优异的性能和简单易用的操作方式,成为大批量数据拷贝的首选方案。本文将详细介绍金士顿U盘量产工具的特点、使用方法以及实际应用案例,帮助读者更好地了解和使用这一高效便捷的大批量数据拷贝方案。工具原料:系统版本:Windows1020H2品牌型号:金士顿DataTraveler100G3U盘软件版本:金士顿U盘量产工具v1.2.0一、金士顿U盘量产工具的特点1、支持多种U盘型号:金士顿U盘量

Oracle数据库和MySQL都是基于关系模型的数据库,但Oracle在兼容性、可扩展性、数据类型和安全性方面更胜一筹;而MySQL则侧重速度和灵活性,更适合小到中等规模的数据集。①Oracle提供广泛的数据类型,②提供高级安全功能,③适合企业级应用程序;①MySQL支持NoSQL数据类型,②安全性措施较少,③适合小型到中等规模应用程序。

SQL 视图是一种虚拟表,从基础表派生数据,不存储实际数据,查询时动态生成。优点包括:数据抽象、数据安全性、性能优化和数据完整性。通过 CREATE VIEW 语句创建视图,可以用作其他查询中的表,但更新视图实际上会更新基础表。

不可能直接在手机上用单一应用完成 XML 到 PDF 的转换。需要使用云端服务,通过两步走的方式实现:1. 在云端转换 XML 为 PDF,2. 在手机端访问或下载转换后的 PDF 文件。

在 Vue.js 中,GET 和 POST 的主要区别在于:GET 用于检索数据,而 POST 用于创建或更新数据。GET 请求的数据包含在查询字符串中,而 POST 请求的数据包含在请求体中。GET 请求的安全性较低,因为数据在 URL 中可见,而 POST 请求更安全。
