作为一个开发,少不了和git打交道,像github,gitee是很流行的git线上托管平台,而我们也搭建自己的git托管平台,有条件的可以使用gitlab,它对硬件有要求,像博主这种没条件用虚拟机的,推荐使用gogs。

  Gogs 的是一个由 Go 语言开发的、可以简单、快速搭建自助 Git 服务。在宿主机上的安装可以参考官网:https://gogs.io/docs/installation

  不过在宿主机上直接安装会麻烦一点,需要自行安装git工具,如果使用ssh还要安装ssh服务器,如果使用源码安装,还可能需要go语言的编译环境,所以,如果是自己或者是小团队使用,推荐使用docker来安装

  安装

  首先,我们要安装docker,可以参考:docker简单安装

  接着使用docker获取gogs的镜像:  

    # pull gogs镜像
sudo docker pull gogs/gogs

  镜像中已经包换了git,ssh服务器等工具,无需我们安装,我们只需使用镜像创建容器即可:  

    # 创建并运行一个容器,将宿主机的10022端口映射到容器的22端口,将宿主机的13000端口映射到容器的3000端口,10022端口和13000端口可以根据自己的情况修改
sudo docker run -d -p 10022:22 -p 13000:3000 -v /var/gogs:/data gogs/gogs

  这里需要注意的是两点:

  1、22端口是gogs的ssh服务端口,如果不开启ssh服务,可不做这个端口映射,3000是gogs应用服务端口,这两个端口可以修改,但是需要结合后续配置一同修改,这点在后面配置时来说明。
  2、这里做了一个卷映射,/data是容器内部gogs的数据目录,gogs后续的配置、git仓库等等都在这个目录中,我们将它映射到宿主中,方便数据保存以及配置的改动,比如我这里的/var/gogs,需要提前将目录创建好:sudo mkdir /var/gogs。

  容器成功运行后,我们可以在浏览器通过宿主机的ip+13000端口打开gogs的首次运行安装程序 ,比如我这里是 http://192.168.209.128:13000

  数据库设置

  gogs目前支持3种数据库:MySQL、PostgreSQL、SQLite3

  如果没有可用的数据库,可以选择SQLite3:

  

  如果是MySQL或者PostgreSQL,大致是这样的:

  

  如果您使用 MySQL,请使用 INNODB 引擎以及 utf8_general_ci 字符集。

  应用基本设置

  基本应用设置说明:  

    应用名称:可以换成自定义名称
仓库根目录:使用默认就行了,默认/data/git/gogs-repositories,如果采用了数据卷映射,比如我这里因为/var/gogs映射/data,所以这个目录在宿主机中的地址是/var/gogs/git/gogs-repositories
运行系统用户:不要修改,默认就是git用户,修改可能会有问题
域名:使用ssh时使用的域名或者IP(看后文使用说明)
SSH 端口号:gogs启用ssh时使用的端口号,默认22端口,如果修改了这个端口号,那么在上面创建容器时要对应的将10022端口映射到修改的端口号,如果不启用ssh,则置空
HTTP 端口号:gogs应用启动的http端口,默认3000,如果修改了这个端口号,那么在上面创建容器时要对应的将13000端口映射到修改的端口号
应用 URL:即打开应用的url地址,因为这里采用了docker,所以我们要修改成宿主机的地址转发去访问,比如这里我的宿主机地址:192.168.209.128,它的13000端口会转发到容器的3000端口,所以这里填:http://192.168.209.128:13000/
  日志路径:gogs的日志保存路径,默认就行了

  注:更多配置在/data/gogs/conf/app.ini中,如果采用了数据卷映射,比如我这里因为/var/gogs映射/data,所以这个文件在宿主机中的/var/gogs/gogs/conf/app.ini,更多说明见后文

   

  其他可选配置可按自己的需求修改,修改完成后点击立即安装即可。

  使用说明

  安装完成之后,就可以使用了,默认情况下,我们需要自己注册一个账号,然后登陆:

  

  注册登录之后,我们可以在右上角的+号创建一个仓库:

  

  例如:

  

  创建完成之后大概是这样子的:

  

  默认情况下是可以使用http进行git clone的,当然我们也可以使用https,不过需要做更多的配置,这时需要修改/data/gogs/conf/app.ini文件中的配置了,因为没有cert证书,所以就不演示了。

  另外,因为我们启用了ssh,我们也可以使用ssh来操作:

  

  其中,我们上面安装=》应用基础设置中的【域名】配置就是上图中红色方框中的 git@域名:XXXX/XXX 中的域名部分

  注意,如果你直接使用这个ssh地址去clone,会让你输入git的密码:git@192.168.209.128's password:

  

  这里可能你输入任何密码都是错的,哪怕输入对了密码,可能也提示目录不存在,什么原因?

  首先,说明一下,ssh的连接地址是 user@host:path 格式,对于上面的demo仓库中,git是用户名,host是宿主机地址(192.168.209.128),test/demo.git是仓库路径。

  那端口呢?属性ssh命令的话就会知道,ssh命令如果要指定端口,需要使用-p选项来指定,否则使用的是默认端口22.

  再来看看,上面说过,因为我们的gogs是部署在docker上,对于ssh,我们使用宿主机的10022端口转发到容器的22端口,那使用ssh进行clone时,我们的宿主机地址是192.168.209.128,因为没有指定端口,所以连接的端口是宿主机的22端口,但是我们的宿主机的22端口没有战法到容器的22端口呀!!!所以他会认为git用户是宿主机的,如果宿主机没有创建git用户,那么输入任何密码都是错的,哪怕密码对了,也可能因为未在宿主机安装gogs或者路径不存在而访问失败。

  那是不是说我们在docker上部署的gogs不能使用ssh?其实是可以的,你可以将宿主的22端口转发到容器的22端口。另外,还有一个做法,这里只是因为 git@域名:XXXX/XXX 这种格式进行clone不能指定端口而不能使用,我们可以使用另外一种类似http请求Url的ssh格式:ssh://user@host:port/path,例如这里demo仓库:git clone ssh://git@192.168.209.128:10022/test/demo.git

  

  不过这里我们clone还是失败了,大致的意思是,我们没有配置ssh秘钥。

  ssh秘钥

  ssh秘钥生成及使用参考:SSH公/私秘钥的生成及使用

  创建完成后,我们打开.ssh目录下id_rsa.pub文件(公钥文件),复制里面的全部内容,然后打开gogs控制面板=》右上角用户配置=》SSH秘钥=》新增秘钥:

  

  保存后,我们就可以使用ssh://协议去clone了

  

  注:如果还是失败,可以删除.ssh目录下的known_hosts文件再试试

gogs安装与说明(docker)的更多相关文章

  1. Docker的安装以及使用Docker安装jenkins,gogs,tomcat(一)

    (1)Docker的安装  官网安装链接 :https://yeasy.gitbooks.io/docker_practice/content/ 卸载旧版本 旧版本的 Docker 称为 docker ...

  2. Gogs 安装 - 本地安装,容器安装

    文章目录 安装 Gogs 本地安装 前提条件: 数据库 git 创建 git 用户 SSH 服务器 安装 升级 配置及运行 配置 运行 Gogs 服务 在线安装 Gogs 后台运行 gogs 通过 d ...

  3. 在Ubuntu 14.04安装和使用Docker

    Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器.然而,Docker与虚拟机不同,它使用了沙箱机制,Docker容器不运行操作系统,它共享主机上的 ...

  4. [转]在Ubuntu 14.04安装和使用Docker

    在Ubuntu 14.04安装和使用Docker 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs Docker是一个开源软件,它可以把一 ...

  5. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  6. ubuntu16.04安装最新版docker、docker-compose、docker-machine

    安装前说明: 本文将介绍在ubuntu16.04系统下安装和升级docker.docker-compose.docker-machine. docker:有两个版本:docker-ce(社区版)和do ...

  7. Centos7下安装与卸载docker应用容器引擎

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  8. Docker的安装和使用说明——Docker for Windows

    一.Docker安装 1.1官方方法 官方下载页面:http://www.docker.com/products/docker#/windows 官方下载地址:https://download.doc ...

  9. CentOS 下安装和使用 Docker

    引言: 在服务器开发过程中,环境部署无疑是及其繁琐的事情,特别是当项目数量和规模达到一定级别之后,在一台新的机器上部署项目环境无疑是极其漫长而痛苦的,那么什么办法能够实现我们的目标:在开发环境的一次配 ...

随机推荐

  1. Can namespaces be nested in C++?

    In C++, namespaces can be nested, and resolution of namespace variables is hierarchical. For example ...

  2. JavaBean的命名规则

    JavaBean的命名规则Sun 推荐的命名规范1 ,类名要首字母大写,后面的单词首字母大写2 ,方法名的第一个单词小写,后面的单词首字母大写3 ,变量名的第一个单词小写,后面的单词首字母大写为了使 ...

  3. feign中开启熔断的书写步骤

    /**   1.在pom.xml中引入依赖    2.在application.yaml中开启hystrix 3.在方法上配置熔断类     4.书写接口的实现类 **/ //1.在pom.xml中引 ...

  4. [手写系列] Spirit带你实现防抖函数和节流函数

    前言 防抖函数和节流函数,无论是写业务的时候还是面试的时候,想必大家已经听过很多次了吧.但是大家在用到的时候,有了解过他们之间的区别嘛,他们是如何实现的呢?还是说只是简单的调用下像lodash和und ...

  5. 使用NTP原理进行时间同步

    在一些物联网企业,平台会和嵌入式一起配合进行工作. 有时平台会希望嵌入式这边不使用现成的NTP方案自己去同步时间,而希望以平台下发的时间为准. 此时就有两个方案. 方案1.  平台下发一个时间戳tim ...

  6. UVA10976 分数拆分 Fractions Again?! 题解

    Content 给定正整数 \(k\),找到所有的正整数 \(x \geqslant y\),使得 \(\frac{1}{k}=\frac{1}{x}+\frac{1}{y}\). 数据范围:\(0& ...

  7. 【超详细】安全测试===sqlmap使用心得(零)

    零.前言 这篇文章是学习Sqlmap的用法时做的笔记,记录了Sqlmap的常见.基础用法. 一.Sqlmap是什么 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: 完全支 ...

  8. 前端er必须掌握的数据可视化技术

    又是一月结束,打工人准时准点的汇报工作如期和大家见面啦.提到汇报,必不可少的一部分就是数据的汇总.分析. 作为一名合格的社会人,我们每天都在工作.生活.学习中和数字打交道.小到量化的工作内容,大到具体 ...

  9. Python软件目录结构

    目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论. 这里面说的已经很好了, ...

  10. Mysql 主从复制机制

    https://blog.csdn.net/girlgolden/article/details/89226528 MySQL异步复制及semi-sync半同步复制,它们都基于MySQL binlog ...