408. 【go-语言】使用私有仓库的-go-module

我们使用 go 语言时,现在用的 go mod初始化项目比较多。现在问题来了,我们经常使用 github 上的 go module,那如何使用我们自己私有仓库里的 go module 呢?

一、go mod 初始化项目

go mod init proxy.qijing.com/share/go-sql-driver/my_module

注意:go mod init后面的参数,就是我们在项目中引用的参数,举个例子如下,

import (
	_ "proxy.qijing.com/share/go-sql-driver/my_module" // 对应这个地方。
	"database/sql"
	"time"
)

二、git 初始化项目

git init
git add .
git commit -m 'init'

三、推送项目到 git 仓库

git push --set-upstream http://proxy.qijing.com/share/go-sql-driver/my_module.git master

四、修改环境变量


环境变量说明:

  1. GOPROXY - 国内一般都要有
  2. GOINSECURE - 仓库不支持 https 访问时,需要加上
  3. GOPRIVATE - 告诉 go 语言,我们的 module是来自私有仓库的

上面几步弄完之后,就可以在其他项目中引用 my_module这个项目了,很方便。

五、进阶

对于带端口号的私有仓库,需要用 nginx 做代理,构造假的请求,去满足规则,配置文件如下:


# user  nobody;
worker_processes  1;

# error_log  logs/error.log;
# error_log  logs/error.log  notice;
# error_log  logs/error.log  info;

# pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    # log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                   '$status $body_bytes_sent "$http_referer" '
    #                   '"$http_user_agent" "$http_x_forwarded_for"';

    # access_log  logs/access.log  main;

    sendfile        on;
    # tcp_nopush     on;

    # keepalive_timeout  0;
    keepalive_timeout  65;

    # gzip  on;

	server {
		listen 80;
		server_name proxy.qijing.com;
		
		#  伪造goget响应,使得内部验证规则通过
		if ($args ~* "^go-get=1") {
		  set $condition goget;
		}
		if ($uri ~ ^/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)*$) {
		  set $condition "${condition}path";
		}
		if ($condition = "gogetpath") {
		  return 200 "<!DOCTYPE html><html><head><meta content='proxy.qijing.com/$1/$2/$3 git http://proxy.qijing.com/$1/$2/$3.git' name='go-import'></head></html>";
		}

		location / {
				proxy_pass http://proxy.qijing.com:10000;
		}

	}
}

注意:如果 go mod 的初始化路径只有两层,比如: go mod init proxy.qijing.com/go-sql-driver/my_module则配置文件中的 /$1/$2/$3需要改成 /$1/$2

同时修改本地 host文件,新增如下域名映射:

127.0.0.1 proxy.qijing.com
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值