Docker搭建Gogs代码仓库——代码⾃动化运维部署平台(⼀)
⼀、准备⼯作
1、Gogs
概念:
Gogs 是⼀款极易搭建的⾃助 Git 服务。
⽬的:
Gogs 的⽬标是打造⼀个最简单、最快速和最轻松的⽅式搭建⾃助 Git 服务。使⽤ Go 语⾔开发使得 Gogs 能够通过独⽴的⼆进制分发,并且⽀持 Go 语⾔⽀持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。2、搭建前环境准备
1、,192.168.1.20
2、nginx服务器192.168.1.10
3、,192.168.1.20
4、电脑安装:intellij IDEA  开发⼈员编写代码⼯具
      git        开发⼈员将本地代码⽤git提交到git远程仓库。
⼆、Docker搭建gogs,并上传项⽬
1、安装gogs
mkdir -p /server/docker/gogs/data      #在宿主机创建gogs持久化存储⽬录
chmod -R 777 /server/docker/gogs/data     #为gogs持久化存储数据做⽬录授权
#注:chmod -R 777 /server/docker/gogs/data  如果是root⽤户运⾏gogs,不授权也可以
如果⽤普通⽤户运⾏gogs,不授权,⽬录映射会失败
docker run --restart=always --name=gogs -p 10022:22 -p 10080:3000 \
-v /server/docker/gogs/data:/data \
-v /etc/localtime:/etc/localtime \
-
itd gogs/gogs:latest
测试访问gogs页⾯:192.168.1.20:10080
server {
server_st;
listen 80;
location / {
proxy_pass 192.168.1.20:10080;
}
}
⾸次运⾏gogs安装程序需填写数据库信息,所以要创建gogs数据库和gogs⽤户: 
登录mysql数据库,并执⾏:
  create database gogs;    #创建gogs数据库
  grant all privileges on gogs.* to gogs@'%' identified by 'gogs';    #创建⽤户并授权
  flush privileges;    #刷新权限
填写安装程序所需的信息:
禁⽌⽤户注册并设置gogs页⾯的管理员账号:
注:上图的应⽤基本设置
应⽤名称:可以换成⾃定义名称
仓库根⽬录:使⽤默认就⾏了,默认/data/git/gogs-repositories。如果采⽤了数据卷映射,⽐如我这⾥因为/server/docker/gogs/data映射/data,需要给这个⽬录777权限,负责会创建失败。
域名:使⽤ssh时使⽤的域名或者IP
SSH 端⼝号:gogs启⽤ssh时使⽤的端⼝号,默认22端⼝,如果修改了这个端⼝号,那么在上⾯创建容器时要对应的将10022端⼝映射到修改的端⼝号,如果不启⽤ssh,则置空
HTTP 端⼝号:gogs应⽤启动的http端⼝,默认3000,如果修改了这个端⼝号,那么在上⾯创建容器时要对应的将10080端⼝映射到修改的端⼝号
应⽤ URL:即打开应⽤的url地址,因为这⾥采⽤了docker,所以我们要修改成宿主机的地址转发去访问,⽐如这⾥我的宿主机地址:192.168.1.20,它的10080端⼝会转发到容器的3000端⼝,所以这⾥填:192.168.1.20:10080/⽇志路径:gogs的⽇志保存路径,默认就⾏了
##安装程序运⾏完成后,会⽣成⼀个app.ini⽂件,在宿主机映射⽬录/server/docker/gogs/data/gogs/conf/app.ini,其中有相关的配置信息,尽量不要修改此⽂件,可能导致服务⽆法访问。
2、上传代码以及管理、配置gogs页⾯
创建仓库:
上传项⽬代码:根据提⽰操作(后⽂有相关的命令补充)
代码上传完毕,就可以进⾏仓库设置,下图圈住的这⼏个选项是⽐较常⽤的,可以⾃⼰设置⼀下。
gogs管理⾯板:可以创建⽤户、组织等,可以根据⾃⼰需求添加
三、相关知识补充
1、代码在本地仓库和远程仓库之间上传、下载的⽅法
(1)本地git⼯具: Git操作命令
在本地git使⽤001⽤户建⼀个项⽬:test
进⾏git全局配置:
git config --global user.name "001"
git config --ail "xxxxxxxxxxx@163"
创建⼀个仓库:
mkdir test
cd test
git init            #⽣成本地.git⽂件
touch README.md
git add mall              #mall为需要上传的⽂件夹或⽂件
git commit -m "mall"      #对上传⽂件的描述
git branch -a              #查看所有分⽀
git branch slave          #创建slave分⽀
git checkout slave        #切换到slave分⽀
git remote add origin st/001/test.git  #关联远程仓库,远程仓库名字是origin
git push -u origin master  #上传分⽀
重新上传⽂件
git rm -r  ⽂件夹
git rm  ⽂件
把你要重新上传的⽂件放⼊项⽬中再提交⼀次
git add 要上传的⽂件
git commit -m "删除的某⽂件的提⽰"
git push -u origin master  #提交到远程仓库
Git remote 修改源
git remote -v        #查看clone下来的git源
git commit -m "Change repo."    # 先把所有为保存的修改打包为⼀个commit
git remote remove origin        # 删掉原来git源
git remote add origin [YOUR NEW .GIT URL] # 将新源地址写⼊本地版本库配置⽂件
git push -u origin master        # 提交所有代码
git仓库项⽬代码迁移(将st的项⽬迁移到git.prod中)
mkdir gitspace
cd gitspace
git clone st/001/test.git    #git克隆远程项⽬
cd test
git remote -v     #查看git源
git branch -a     #查看项⽬所有分⽀
git remote rename origin old-origin
git remote add origin git.prod/001/test.git
git push -u origin --all
git push -u origin --tags
将远端分⽀全部变成本地分⽀
1、⾸先将项⽬的所有分⽀clone下来,并且变成本地分⽀。
mkdir some_repo
cd some_repo
git clone --bare st/001/test.git .git
git config --unset core.bare
git reset --hard    上⾯的意思是,⾸先随便建⽴⼀个⽂件夹some_repo,然后在⾥⾯只将xxx的.git⽂件夹拷贝下来!此时,some_repo⾥⾯还是没有任何repo的⽂件,只有⼀个隐藏⽂件夹.git。然后解除core.bare模式,然后再恢复所有的repo⽂件2、将本地分⽀全部推到远端
git remote rename origin old_origin
git remote add origin git.prod/001/test.git
git push -u origin --all
git push -u origin --tags
(2)intellij IDEA软件使⽤:(其实也是使⽤git⼯具上传)
IDEA软件添加git:
打开 Setting 界⾯,点击Tools —— Terminal。修改右侧菜单栏 Shell path ,将设置为你⾃⼰Git安装路径下的(Tab name 改为Git,这个可改可不改)再打开⾸页⾯最底下的⼀栏,Terminal出现git命令界⾯
下载代码:file——>new——>project from version control——>git——>输⼊存放代码地址: st/001/test.git
上传代码:打开⾸页——>open——>选中本地代码——>右击代码⽬录——>git——>add——>成功后再点击git,commit directory——>成功后点击git,push
还可以在IDEA界⾯直接点击Terminal出现git命令界⾯:输⼊git命令上传代码(更⽅便)
2、git上传代码遇到的错误
1、git上传代码卡住(Total 7072 (delta 2508), reused 6844 (delta 2376), pack-reused 0)
git config --global sendpack.sideband false
git config --local sendpack.sideband false
git config --global http.postBuffer 524288000
git config --global https.postbuffer 524288000
git config --global -l
git config --local -l
执⾏完这些命令后,再上传git push -u origin master,可能会稍微卡⼀会⼉,然后就成功了。
2、修改保存在本地的git⽤户名密码
git config --global user.name "⽤户名"
git config --global user.password "密码"
git config --global -l  #查看
3、上传代码报错:error: failed to push some refs to 'st/001/test.git'
#完整报错:
error: failed to push some refs to 'st/001/test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
原因分析:这个问题是因为远程库与本地库不⼀致造成的
解决⽅法:可以把远程库同步到本地库,再把本地库推送到远程库
    git pull --rebase origin master
    git push -u origin master
go语言开发环境搭建4、上传代码报错:error: RPC failed; result=22, HTTP code = 413
#完整错误:
error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date
原因分析:上传⽂件太⼤,超过了最⼤限制
解决⽅法:nginx传输限制:(f)
      client_max_body_size 400M;
     git传输限制:
       git config --global http.postBuffer 524288000
       git config --global https.postBuffer 524288000
愿你阳光开朗⾃信不羁,因为你从来都只是你。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。