dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2198
  • 铜币13994枚
  • 威望6071点
  • 银元155个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:1244回复:0

使用 docker 部署 gogs

楼主#
更多 发布于:2017-06-20 10:37
目标
1. 使用 docker 部署 gogs ;
2. 使用 gogs 完成 git 项目管理;

简介

gogs 是一款极易搭建的自助 Git 服务(带有web控制台), gogs 追求简单、最快速和最轻松的方式搭建自助 Git 服务;
gogs 使用 Go语言开发通,通过二进制(可执行)分发,基于 Go语言特性,支持所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

准备工作

1. 下载镜像
docker pull gogs/gogs
docker pull mysql-server

2. 容器目录
# 用于存储容器的数据。
mkdir -p /data/container/gogs/{mysql,data}

3. 创建 mysql 容器
docker run --name mysql-server -t \
      -e MYSQL_DATABASE="gogs" \
      -e MYSQL_USER="gogs" \
      -e MYSQL_PASSWORD="zongming.net" \
      -e MYSQL_ROOT_PASSWORD="zongming.net" \
      -v /data/container/gogs/mysql:/var/lib/mysql \
      -v /etc/localtime:/etc/localtime:ro \
      -d mysql \
      --character-set-server=utf8 --collation-server=utf8_general_ci --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"


部署
1. 创建 gogs 容器
docker run --name gogs -tid \
      -v /etc/localtime:/etc/localtime:ro \
      -v /data/container/gogs/data:/data \
      --link mysql-server:mysql-server \
      -p 10022:22 -p 13000:3000 \
      gogs/gogs


#解释下创建 gogs 容器的参数,
  -v /data/container/gogs/data:/data  将 gogs 容器 /data的目录,挂载到宿主机 /data/container/gogs/data 目录,避免删除容器时数据丢失;
  --link mysql-server:mysql-server  将 mysql-server 容器,链接到 gogs 容器,容器内部通过 mysql-server 主机名即可与之通信;
  -p 10022:22 -p 13000:3000 ,分别映射 宿主机 10022 与 13000 端口,到 gogs 容器的 22 与 3000 端口,用于对外通信,下面配置gogs 也需要用到;

2. 配置 gogs
gogs 容器创建成功后,通过访问 http://your_Server_ip:your_Port 进入安装配置页面,按照提示,填写相应的配置项目;
必选项,数据库,域名,SSH 端口, HTTP端口,应用 URL,管理员帐号,其它项目可以保持默认。
# 配置页面1

描述:gogs1.png

图片:gogs1.png

gogs1.png

# 配置页面2

描述:gogs2.png

图片:gogs2.png

gogs2.png

最后 点击 “立即安装” 即可。

使用
1. 创建项目
登录帐号后,通过 右侧"+" 图标,创建项目,例如创建一个 名为: happy-robot 项目,如下图:
# 创建中

描述:gogs3.png

图片:gogs3.png

gogs3.png


# 创建完毕

描述:gogs4.png

图片:gogs4.png

gogs4.png


2. 添加公钥
账户设置 -> SSH密钥 -> 增加密钥 ,如下图:

描述:gogs5.png

图片:gogs5.png

gogs5.png


3. 验证
3.1 克隆项目
git clone ssh://git@test.zongming.net:10022/dongnan/happy-robot.git

3.2 push 代码
mv ~/python/kxdz/*.py .
git add .
git commit -m "测试 gogs"

[master 9cae31f] 测试 gogs
 3 files changed, 437 insertions(+)
 create mode 100644 kxdz.py
 create mode 100644 notify.py
 create mode 100644 test.py
git push
省略...
To ssh://git@test.zongming.net:10022/dongnan/happy-robot.git
   d16ec43..9cae31f  master -> master

其它
# gogs 目录结构
tree /data/container/gogs/data/
/data/container/gogs/data/
├── git
│   └── git -> /data/git
├── gogs
│   ├── conf
│   ├── data
│   │   └── data -> /data/gogs/data
│   └── log
│       └── log -> /data/gogs/log
└── ssh
    ├── ssh_host_dsa_key
    ├── ssh_host_dsa_key.pub
    ├── ssh_host_ecdsa_key
    ├── ssh_host_ecdsa_key.pub
    ├── ssh_host_ed25519_key
    ├── ssh_host_ed25519_key.pub
    ├── ssh_host_rsa_key
    └── ssh_host_rsa_key.pub

6 directories, 11 files

参考

https://github.com/gogits/gogs/tree/master/docker
#
欢迎关注微信公众号: 运维录
游客

返回顶部