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