gihub地址:https://github.com/gogs/gogs

gogs官网:https://gogs.io/

gihub官方docker安装gogs方法:https://github.com/gogs/gogs/tree/master/docker

我这边另外一篇centos7安装docker的文章:https://www.cnblogs.com/Sungeek/p/9182433.html

搭建环境:centos7+docker+git+Mariadb

 

最近公司内部需要搭建一个git,我原本是搭建最原始的git+Gitosis(管理公钥),然后公司大牛讲解了一波docker也讲到了gogs然后知道了这个git开源服务很简约,轻巧

这篇文章将介绍如何使用docker来搭建Gogs源码管理仓库,也会在搭建途中把我遇到的问题解决方法都列举出来

 

目录:
Docker下载镜像
docker运行gogs容器
安装Mariadb
配置gogs
验证安装
配置SSH登录
配置文件配置强制登录才能查看其他页面
 

1.Docker下载镜像
首先需要再docker官网hub.docker.com上搜索gogs,找到镜像地址:hub.docker.com/r/gogs/gogs/tags/。然后获取pull到本地centos7服务器,然后tag做下便签方便后面使用。

▲注意:这里我加了registry.docker-cn.com前缀,使用国内的docker镜像库,速度更快一些。

[root@localhost ~]# docker pull gogs/gogs


doker 的这些命令不懂可以参考我前面的docker文章里面的命令大全!

2.docker运行gogs容器
说明:3000端口是http端口,8031是映射端口,所以要是想不加端口后缀可以映射80端口

[root@localhost ~]# docker run -d --name=gogs   --restart always   -p 8031:3000 -p 8032:22 -v /docker/gogs:/data gogs/gogs


查询一下是否运行

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                          NAMES
e75249399222        gogs:0.11           "/app/gogs/docker/..."   42 seconds ago      Up 41 seconds       0.0.0.0:8032->22/tcp, 0.0.0.0:8031->3000/tcp   gogs


如果想配置服务器断电了自启动docker容器:

复制代码
[root@localhost ~]# docker stop e75249399222
e75249399222
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker rm e75249399222
e75249399222
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker run -dit --name=gogs -p 8031:3000 -p 8032:22 -v /data/docker/gogs:/data --restart unless-stopped gogs:0.11.53
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                          NAMES
977c404a64cd        gogs:0.11           "/app/gogs/docker/..."   4 seconds ago       Up 3 seconds        0.0.0.0:8032->22/tcp, 0.0.0.0:8031->3000/tcp   gogs
[root@localhost ~]# 
复制代码
如上面命令所示,我前面已经启动了这个容器需要先停止再删除这个容器再配置开机启动

官方文档说明:https://docs.docker.com/v17.09/engine/admin/start-containers-automatically/

 

3.安装Mariadb  docker 
[root@localhost ~]# docker run --name mariadb -e MYSQL_ROOT_PASSWORD=admin  -d -p 3366:3306 --restart always  mariadb


查看Mariadb是否安装成功

添加一下数据库的3306端口防火墙策略

[root@localhost ~]# firewall-cmd --zone=public --add-port=3366/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

进入  docker  mariadb  

docker exec -it mariadb bash

 

进入mariadb  数据库

mysql  -u root -p

Enter password:   admin
 


创建一个gogs库并设置为utf8的字符编码格式

create database gogs character set utf8 collate utf8_bin;

show databases;查看数据库

授予本地访问权限:

创建账户并且授权设置密码

grant all privileges on gogs.* to gogs@localhost identified by 'gogs';

给来自loclhost的用户gogs分配可对数据库gogs所有表进行所有操作的权限,并且设定密码为gogs

 

授予远程访问权限:

grant all privileges on *.* to 'gogs'@'%' with grant option;

刷新

flush privileges;

 select user, host from user; 查询用户是否创建

# mysql -u root -p /*输入密码进入*/  

/*第一个方式:直接编辑数据库字段*/  

MariaDB [(none)]> use mysql;  

MariaDB [mysql]> UPDATE user SET password=password('newpassword') WHERE user='root';  

MariaDB [mysql]> flush privileges;  

MariaDB [mysql]> exit  

/*第二个方式:修改密码,不用进入mysql*/  

MariaDB [(none)]> SET password for 'root'@'localhost'=password('newpassword');  

MariaDB [(none)]> exit; 

4.配置gogs
上面映射了两个端口,其中8031是http端口号,8032是ssh端口号。假设安装的服务器IP是192.168.1.64,则用浏览器打开http://192.168.1.64:8031,自动跳转至配置页面,然后按下面这样配置。

Docker安装Gogs搭建git服务器_Docker教程

注意:这里注意不要修改上面的3000端口号。

提示:如果配置错了想要重新安装,可以执行:docker stop gogs; docker rm gogs; rm -rf /docker/gogs;

配置完直接点击安装

 

5.验证安装
配置完成后,会自动跳转到登录页:http://192.168.1.64:8031/user/login。这个URL地址也就是上节配置的应用URL(非域名,域名的配置影响的是SSH)。

注册登录成功后,可以创建一个helloworld仓库,可以看到如下界面:

 
6.配置SSH登录
安装完成后,在客户端先安装git软件,然后打开git bash,尝试推送到仓库:

复制代码
touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin http://192.168.1.64:8031/sungeek/helloworld.git
git push -u origin master
复制代码


此时,执行下面几个步骤:

1. 打开Git Bash,执行cat ~/.ssh/id_rsa.pub。查看本地的id_rsa.pub文件内容。

2. 如果没有文件则使用命令,创建密钥(将1838370@qq.com替换成你的gogs账号):

ssh-keygen -t rsa -C "1838370@qq.com"

3. 再次执行cat ~/.ssh/id_rsa.pub,可以看到类似下面的输出:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGG9YIm0vb8MwCZ0AvsQ679JPYtwLGFP0yT8WW+UOpYR46+k+5KGz3oI0gC910es0LZtrUbAlT34IiR2iEAiGhMXe/xfA/hH8A6UL0lvqcz9EYOcKhzmlONzyf3nojkVCi89tRQlGqTncnPt1AXFySXPVKgV3QjSFKRLcvsZso71Xw45vPwPazmq3Ji+v8k9+VTdT9GI1wT/v9Kb54bmfX7kCCFcrAZUDnFK6T0YZyjIDHQo5dThXw58Ks4/CAyODW983Hd4agAvhBDnWmja8CUCsj+lOkaUzUBZHAYB0WdfAfykowNcbeuOsgoTSkwVjBkdBWVaEH725/QxpFnAuJ xiewanpeng@25qp.cn

 

7、配置文件配置强制登录才能查看其他页面
修改配置文件

因为创建gogs的时候  配置文件放在   /docker/gogs/下  

 

/docker/gogs/gogs/conf/app.ini 

[service]
REQUIRE_SIGNIN_VIEW = true

Docker安装Gogs搭建git服务器_Docker教程_02
 

仓库设置为private私人的,不对外可见(url对外404),但是也想让其他人可见,这里可以指定协作者Collaborators

Docker安装Gogs搭建git服务器_Docker教程_03

问:gogs安装完成后账认的管理员账号与密码是什么?
答:默认的管理员账号与密码是你注册的第一个账号,就是安装完成后你的第一个账号就是管理员,同时也有普通账号的功能