用Docker安装Gogs 取代gitlab -给自己的代码安个家

 

自己搭建gogs服务器原因如下:

  1. 原先用的git.oschina.com,发现免费版对diff有限制,这就算了,对于history版本也有限制,这个就不能忍了,当时没办法只能用本地的github过度了一下;
  2. 发现gitlab有docker版本,开心啊,配置就省心多了,于是开始架设gitlab dockerise服务;
  3. 穷人来说只能用一台入门的ecs 1gb ram +1 core,结果gitlab搞笑的告诉我它至少需要3g ram,至少1g ram+2g swap,只是一个git服务而已,我的天;
  4. gitlab用的uncorn很吃内存,但是服务100+用户没问题,咱私人的不需要这么强,而且它依赖的是企业级的架构:nginx+redis+sidekiq +rails++unicorn+postgresql 应该没有列完,换mysql还挺麻烦的;
  5. 官方docker打包了上面提到的服务,大小居然达到了1.1GB;
  6. gogs是用go写的,go可是堪比c++的性能,功能强大,后来试用后功能堪比github,大小只有128MB,兼容三大数据库,sqlite也支持,这个要赞一个,意味着在树莓派上也是妥妥的,最近go的应用真是如火如荼呀,架设好后内存只吃了30MB,良心项目~;)
  7. 近2万~星,应该是国人写的,骄傲一个;

直接说安装步骤吧(ubuntu):

安装docker和docker-compose:

apt-get install docker -y && pip install docker-compose

创建一个存放gogs数据的地方:

mkdir -p /srv/gogs

创建docker-compose.yml  :

nano docker-compose.yml

配置如下:

</pre><pre>gogs:
  image: gogs/gogs
  container_name: gogs
  depends_on:
    - db
  ports:
    - "3000"
  ports:
    - "10022:22"
  volumes:
    - "/srv/gogs:/data"</pre><pre>

上面depends_on部分里的db是我的mysql服务,如果你的mysql服务不是dockerise的话请删掉这部分。

最后运行服务:

docker-compose up

上面只是最简单的配置,它还内置了nginx,所以既可以直接访问上面的3000端口(甚至指定证书)也可以跟现有的nginx再次代理本地80端口转发。

服务起来后就可以初始化配置了,默认注册的第一个账户为管理员账户,数据库信息跟其他服务一样,需要先建好它用的库和用户即可。初始化页面配置的都是必须的选项,比较简单,安装好后可以在控制面板看到很多设置信息,但是是不能更改的,估计是开发者偷懒,我很理解,我也会这样,呵呵。需要修改的话按照上面的配置是在主机的/srv/gogs/gogs/conf/app.ini中修改,详细的配置项在:https://gogs.io/docs/advanced/configuration_cheat_sheet 修改后docker-compose restart gogs即可