iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >怎么使用docker compose部署golang的Athens私有代理
  • 146
分享到

怎么使用docker compose部署golang的Athens私有代理

2023-06-30 11:06:55 146人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“怎么使用Docker compose部署golang的Athens私有代理”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用docker compose部署Golang的Athens私有代理

本文小编为大家详细介绍“怎么使用Docker compose部署golang的Athens私有代理”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用docker compose部署Golang的Athens私有代理”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

go中私有代理搭建

为什么选择 athens

私有化代理的选取标准无非就是下面的几点

托管私有模块;

排除对公有模块的访问;

存储公有模块;

athens 的特点:

Athens 首先可以配置访问私有仓库;

Athens 的会存储每次拉取的包,如果该模块之前没有通过 athens,athens 会向目标地址请求数据,在返回给客户端的时候,会存储该模块到存储中,这样实现了 go mod download永远只会发生一次;

Athens 处理存储的策略为仅追加,一个模块被保存,它就永远不会改变,即使开发人员对 tag 进行了强推,那么也不会被删除;

Athens 也可以配置下载策略,过滤一些有安全隐患的包。

Athens 支持 disk, mongo, GCs, s3, miNIO, 外部存储/自定义,不过一般建议使用 disk。

使用 docker-compose 部署

官方网站已经,提供了通过 docker 和 二进制部署的方案,这里秉着好记性不如烂笔头的原则,这里自己也做了记录

配置私有仓库的认证信息

通过 .netrc 文件来配置,里面可以放自己的私有仓库的地址,以及用户,密码认证信息

# cat .netrcMachine gitlab.test.com login test-name passWord test-pass

有几个私有仓库,配置几个就可以了

配置下载模式

通过 The download mode (下载模式配置策略)是现在 ATHENS 中比较推崇的,之前通过 Filtering modules(过滤模式)的方法,目前已经被弃用了。

来看下如何配置

# DownloadMode defines how Athens behaves when a module@version# is not found in storage. There are 4 options:# 1. "sync" (default): download the module synchronously and# return the results to the client.# 2. "async": return 404, but asynchronously store the module# in the storage backend.# 3. "redirect": return a 301 redirect status to the client# with the base URL as the DownloadRedirectURL from below.# 4. "async_redirect": same as option number 3 but it will# asynchronously store the module to the backend.# 5. "none": return 404 if a module is not found and do nothing.# 6. "file:<path>": will point to an HCL file that specifies# any of the 5 options above based on different import paths.# 7. "custom:<base64-encoded-hcl>" is the same as option 6# but the file is fully encoded in the option. This is# useful for using an environment variable in serverless# deployments.# Env override: ATHENS_DOWNLOAD_MODEDownloadMode = "sync"

通过环境变量 ATHENS_DOWNLOAD_MODE 可指定,也可以修改指定的 config.dev.toml来配置,默认是 sync

ATHENS_DOWNLOAD_MODE 可指定的内容:

通过 file:<path>指定一个 hcl 文件,里面可以对不同的仓库,设置下载模式;

通过 custom:<base64-encoded-hcl> 指定一个 base64 编码的 HCL 文件;

指定具体的全局策略,sync, async, none, redirect, or async_redirect,这是一个全局的设置,上面的两种是可以定制策略组的。

来看下具体的下载模式

  • sync: 通过 同步从 VCS 下载模块 go mod download,将其持久化到存储中,并立即将其返回给用户。请注意,这是默认行为;

  • async:向客户端返回 404,并异步下载 module@version 并将其持久化到存储中;

  • none:返回 404 并且什么也不做;

  • redirect:重定向到上游代理(例如proxy.golang.org),之后什么也不做;

  • async_redirect:重定向到上游代理(例如proxy.golang.org)并异步下载 module@version 并将其持久化到存储中;

下面看下配置策略的 hcl 文件

# cat download.hcl  downloadURL = "https://goproxy.cn"mode = "async_redirect"download "gitlab.test.com/*" {    mode = "sync"}

部署

这里使用 docker-composer 部署

version: '2'services:  athens:    image: gomods/athens:v0.11.0    restart: always    container_name: athens_proxy    ports:      - "3000:3000"    volumes:      - ./.netrc:/root/.netrc      - ./athens-storage:/var/lib/athens      - ./download.hcl:/root/download.hcl    environment:      - ATHENS_NETRC_PATH=/root/.netrc      - ATHENS_STORAGE_TYPE=disk      - ATHENS_DISK_STORAGE_ROOT=/var/lib/athens      - ATHENS_GOGET_WORKERS=100      - ATHENS_DOWNLOAD_MODE=file:/root/download.hcl      - ATHENS_GONOSUM_PATTERNS=gitlab.test.com

ATHENS_GONOSUM_PATTERNS:配置为私库地址,配置的仓库地址,不会进行安全向校验。

go 处于安全性考虑,为了保证开发者的依赖库不被人恶意劫持篡改,所以引入了 GOSUMDB 环境变量来设置校验服务器

当你在本地对依赖进行变动(更新/添加)操作时,Go 会自动去这个服务器进行数据校验,保证你下的这个代码库和世界上其他人下的代码库是一样的。如果有问题,会有个大大的安全提示。当然背后的这些操作都已经集成在 Go 里面了,开发者不需要进行额外的操作。

对于我们的私有仓库,去公共安全校验库校验,肯定是不能通过校验的,我们可以通过 ATHENS_GONOSUM_PATTERNS 这个环境变量来设置不做校验的代码仓库, 它可以设置多个匹配路径,用逗号相隔。

启动 docker-compose up -d

客户端设置代理 export GOPROXY=Http://xxxx:3000

这样就能使用我们的代理服务了

因为选择的 ATHENS_STORAGE_TYPE 为 disk,athens 服务会在拉取资源包的同时,也会下载资源包到配置的 ATHENS_DISK_STORAGE_ROOT 中。

使用秘钥的方式认证私有仓库

上面通过 .netrc 的方式来认证私有仓库,因为账号密码是铭文的总归不太好,可以使用秘钥的方式来认证

1、配置秘钥

首先查看电脑有没有秘钥

# cd .ssh# lsid_rsaid_rsa.pub

没有的话通过下面的命令的生成

# ssh-keygen -t rsa -C "youremail@example.com"

邮箱换成自己的,一路回车即可

然后将 id_rsa.pub 公钥的内容添加到自己的私有仓库中,如何添加自己 google 吧,比较简单

2、配置 HTTP 与 SSH 重写规则

# cat gitconfig [url "ssh://git@gitlab.test.com"]        insteadOf = https://gitlab.test.com

3、配置 SSH 来绕过主机 SSH 键验证

# cat config Host gitlab.test.comHostname gitlab.test.comStrictHosTKEyChecking noIdentityFile /root/.ssh/id_rsa

将上面配置的认证信息,映射到容器中即可

version: '2'services:  athens:    image: gomods/athens:v0.11.0    restart: always    container_name: athens_proxy    ports:      - "3000:3000"    volumes:      - ./athens-storage:/var/lib/athens      - ./download.hcl:/root/download.hcl      - ./gitconfig:/root/.gitconfig      - ./ssh-keys:/root/.ssh    environment:      - ATHENS_STORAGE_TYPE=disk      - ATHENS_DISK_STORAGE_ROOT=/var/lib/athens      - ATHENS_GOGET_WORKERS=100      - ATHENS_DOWNLOAD_MODE=file:/root/download.hcl      - ATHENS_GONOSUM_PATTERNS=gitlab.test.com

这样即可实现秘钥的认证了

需要注意私钥的权限,刚开始没注意,执行报了下面的错误

        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        Permissions 0644 for '/root/.ssh/id_rsa' are too open.        It is required that your private key files are NOT accessible by others.        This private key will be ignored.        Load key "/root/.ssh/id_rsa": bad permissions        git@gitlab.test.com: Permission denied (publickey).        fatal: Could not read from remote repository.

看报错就可推断出,是权限太大了,需要私钥文件不能被其他人所访问。

修改权限就可以了

ssh-keys # chmod 600 id_rsa

读到这里,这篇“怎么使用docker compose部署golang的Athens私有代理”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网GO频道。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么使用docker compose部署golang的Athens私有代理

本文链接: https://www.lsjlt.com/news/328337.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用docker compose部署golang的Athens私有代理
    本文小编为大家详细介绍“怎么使用docker compose部署golang的Athens私有代理”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用docker compose部署golang的Athens私有代理...
    99+
    2023-06-30
  • 详解使用 docker compose 部署 golang 的 Athens 私有代理问题
    目录go中私有代理搭建前言为什么选择 athens使用 docker-compose 部署配置私有仓库的认证信息配置下载模式部署使用秘钥的方式认证私有仓库1、配置秘钥2、配置 HTT...
    99+
    2024-04-02
  • 怎么使用Docker-compose部署mysql
    这篇文章主要介绍了怎么使用Docker-compose部署mysql的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Docker-compose部署mysql文章都会有所收获,下面我们一起来看看吧。一、D...
    99+
    2023-07-06
  • 怎么使用docker-compose来部署服务
    今天就跟大家聊聊有关怎么使用docker-compose来部署服务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用docker-compose 大杀器来部署服务 先从 d...
    99+
    2023-06-19
  • 怎么使用docker-compose部署mysql数据库
    要使用docker-compose部署MySQL数据库,需要按照以下步骤操作: 首先,确保你已经安装了Docker和docker...
    99+
    2024-04-09
    mysql
  • 使用docker-compose 部署 MySQL(所有版本通用)
    目录 一、拉取MySQL镜像二、创建挂载目录三、添加配置文件my.cnf (没有特殊需求可以跳过)四、编写 docker-compose.yml 文件五、启动容器六、运行后查看启动容器的情况七...
    99+
    2023-10-22
    docker 容器 mysql 数据库 运维
  • Docker私有仓库Harbor怎么部署
    本篇内容主要讲解“Docker私有仓库Harbor怎么部署”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker私有仓库Harbor怎么部署”吧!一、Harbor仓库介绍我们在日常Docke...
    99+
    2023-06-29
  • 使用Docker Compose部快速署ELK(亲测有效)
    目录1.概述1.1定义1.2功能说明2.部署ELK2.1创建目录和文件2.2配置docker-compose并启动2.3打开kibana3.收集日志3.1环境准备3.2使用logba...
    99+
    2024-04-02
  • 怎么使用docker compose安装harbor私有仓库
    这篇文章主要介绍怎么使用docker compose安装harbor私有仓库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!概述  harbor是什么呢?英文单词的意思是:港湾。港湾用来存放集装箱(货物的),而dock...
    99+
    2023-06-20
  • 快速使用docker-compose部署clickhouse的教程
    ClickHouse 是一个开源的面向列的 DBMS(由 Yandex 开发)。ClickHouse 的工作速度比传统方法快 100-1000 倍。它适用于大数据、业务分析和时间序列...
    99+
    2024-04-02
  • Docker Compose部署及基础使用的方法
    本篇内容主要讲解“Docker Compose部署及基础使用的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker Compose部署及基础使用的方法...
    99+
    2024-04-02
  • 使用Docker-compose部署mysql的简单步骤
    目录前言一、docker-compose简介二、部署步骤总结前言 虽然docker部署环境比自己下载安装包要方便不少,但是docker的命令还有挂载目录在每次启动容器的时候都去找命令对使用者是很不友好的,而且有时候要启动...
    99+
    2023-04-14
    docker-compose部署mysql docker-compose部署mysql主从服务器
  • 怎么使用docker安装部署NextCloud私人网盘
    这篇文章主要讲解了“怎么使用docker安装部署NextCloud私人网盘”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用docker安装部署NextCloud私人网盘”吧!1、查询并...
    99+
    2023-06-30
  • 使用Docker Compose搭建部署ElasticSearch的配置过程
    目录什么是 Elasticsearch?Elasticsearch 的用途是什么?Elasticsearch 的工作原理是什么?Elasticsearch 索引是什么?说明一、目录准...
    99+
    2024-04-02
  • 使用docker compose一键部署WordPress博客的方法
    目录1、创建wordpress项目目录2、创建docker-compose.yml配置文件3、一键启动wordpress项目4、查看相关信息参数5、配置wordpress1、创建wo...
    99+
    2024-04-02
  • Docker registry私有镜像仓库服务怎么部署
    ...
    99+
    2023-06-30
  • 使用Nginx和Docker Compose优化PHP应用程序的部署
    引言:随着互联网和Web应用的发展,PHP作为一种广泛应用的编程语言,被广泛用于构建各种网站和应用程序。然而,传统的部署方式可能会面临一些挑战,例如环境配置繁琐、版本冲突、扩容困难等。在这种情况下,使用Nginx和Docker Compos...
    99+
    2023-10-21
    优化 Docker Compose 关键词:Nginx
  • 怎么使用docker部署hbase
    这篇文章将为大家详细讲解有关怎么使用docker部署hbase,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。安装docker先输入docker -v,装过就不用再装了。yum update&nb...
    99+
    2023-06-14
  • 怎么用Golang和Docker部署应用程序
    本文小编为大家详细介绍“怎么用Golang和Docker部署应用程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Golang和Docker部署应用程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第一步...
    99+
    2023-07-05
  • docker部署的代码怎么修改
    要修改一个已经部署在 Docker 容器中的代码,需要按照以下步骤进行操作:1. 进入运行容器的终端:使用 `docker exec...
    99+
    2023-09-04
    docker
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作