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 registry.docker-cn.com/gogs/gogs:0.11.53
[root@localhost ~]# docker tag registry.docker-cn.com/gogs/gogs:0.11.53 gogs:0.11.53
[root@localhost ~]# docker rmi registry.docker-cn.com/gogs/gogs:0.11.53;
Untagged: registry.docker-cn.com/gogs/gogs:0.11.53
Untagged: registry.docker-cn.com/gogs/gogs@sha256:3b2bc27e1c786d84cbd3c28010e0f97448b04effb9f0ef2b91ca73445da20eb1
doker 的这些命令不懂可以参考我前面的docker文章里面的命令大全!
2.docker运行gogs容器
说明:3000端口是http端口,8031是映射端口,所以要是想不加端口后缀可以映射80端口
[root@localhost ~]# docker run -d --name=gogs -p 8031:3000 -p 8032:22 -v /docker/gogs:/data gogs:0.11.53
e75249399222383e7f4e7a3715e6e45569d31862ee7ef01d5ffda69d845c9663
查询一下是否运行
[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
[root@localhost ~]# yum install -y mariadb mariadb-server
开机自启动
[root@localhost ~]# Systemctl enable mariadb
运行服务
[root@localhost ~]# Systemctl start mariadb
查看Mariadb是否安装成功
添加一下数据库的3306端口防火墙策略
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
创建一个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,自动跳转至配置页面,然后按下面这样配置。
注意:这里注意不要修改上面的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/conf/app.ini [service]
REQUIRE_SIGNIN_VIEW = true