1. 程式人生 > >Centos7使用Docker安裝Gogs源碼git倉庫

Centos7使用Docker安裝Gogs源碼git倉庫

maria bubuko ins adb geek 註意 方法 配置服務 cal

技術分享圖片

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
[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容器

[root@localhost ~]# docker run -d --name=gogs -p 8031:3000 -p 8032:22 -v /docker/gogs:/data gogs:0.11
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 /docker/gogs:/data --restart unless-stopped gogs:0.11
977c404a64cd8a2bd27f2d186f591f558441a55ca425906cde8ca8697a091b7f
[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. 如果沒有文件則使用命令,創建密鑰(將[email protected]替換成你的gogs賬號):

ssh-keygen -t rsa -C "[email protected]"

3. 再次執行cat ~/.ssh/id_rsa.pub,可以看到類似下面的輸出:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGG9YIm0vb8MwCZ0AvsQ679JPYtwLGFP0yT8WW+UOpYR46+k+5KGz3oI0gC910es0LZtrUbAlT34IiR2iEAiGhMXe/xfA/hH8A6UL0lvqcz9EYOcKhzmlONzyf3nojkVCi89tRQlGqTncnPt1AXFySXPVKgV3QjSFKRLcvsZso71Xw45vPwPazmq3Ji+v8k9+VTdT9GI1wT/v9Kb54bmfX7kCCFcrAZUDnFK6T0YZyjIDHQo5dThXw58Ks4/CAyODW983Hd4agAvhBDnWmja8CUCsj+lOkaUzUBZHAYB0WdfAfykowNcbeuOsgoTSkwVjBkdBWVaEH725/QxpFnAuJ [email protected]

技術分享圖片

Sungeek博客
一名運維小菜鳥
http://www.cnblogs.com/Sungeek/

感謝閱讀,希望這篇文章能給你帶來幫助!

Centos7使用Docker安裝Gogs源碼git倉庫