使用 Docker 部署 Gogs
2017-06-20 by dongnan
更新,如果你需要直接使用 docker-compose 部署 gogs ,请参考这里。
目标
- 使用
docker部署gogs - 使用
gogs完成git项目管理。
简介
gogs 是一款极易搭建的自助 Git 服务(带有web控制台), gogs 追求简单、最快速和最轻松的方式搭建自助 Git 服务。
gogs 使用 Go语言开发通,通过二进制(可执行)分发,基于 Go语言特性,支持所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
准备工作
gogs 需要使用数据库支持,这里会提前准备好 mysql 容器。
下载镜像
docker pull gogs/gogs
docker pull mysql-server
创建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 db-data:/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"
部署
创建 gogs 容器
docker run --name gogs -tid \
-v /etc/localtime:/etc/localtime:ro \
-v gogs-data:/data \
--link mysql-server:mysql-server \
-p 10022:22 -p 13000:3000 \
gogs/gogs
解释下创建 gogs 容器的参数
-v gogs-data:/data将gogs容器/data的目录,挂载到gogs-data的数据卷,避免删除容器时数据丢失。--link mysql-server:mysql-server将mysql-server容器,链接到gogs容器,容器内部通过mysql-server主机名即可与之通信。-p 10022:22 -p 13000:3000,分别映射 宿主机10022与13000端口,到gogs容器的22与3000端口,用于对外通信。
配置 gogs
gogs 容器创建成功后,通过访问 http://your_Server_ip:your_Port 进入安装配置页面,按照提示,填写相应的配置项目。
必选项,数据库,域名,SSH 端口, HTTP端口,应用 URL,管理员帐号,其它项目可以保持默认。
- 配置页面1
![]()
- 配置页面2
![]()
- 最后 点击 “立即安装” 即可。
使用
创建项目
登录帐号后,通过 右侧"+" 图标,创建项目,例如创建一个 名为: happy-robot 项目,如下图:
创建中
![]()
创建完毕
![]()
添加公钥
账户设置 -> SSH密钥 -> 增加密钥 ,如下图:
![]()
验证
克隆项目
git clone ssh://git@test.zongming.net:10022/dongnan/happy-robot.git
推送代码
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
扩展: 使用 docker-compose 来编排 gogs应用
cat gogs/docker-compose.yml
version: '2'
services:
gogs-web:
image: gogs/gogs
container_name: gogs-web
volumes:
- /etc/localtime:/etc/localtime:ro
- gogs-data:/data
environment:
- TZ=Asia/Chongqing
ports:
- "12122:22"
- "13130:13130"
# - "13130:3000" rewrite portmap rule after restart container.
links:
- gogs-db:mysql-server
gogs-db:
image: mysql:5.7
container_name: gogs-db
volumes:
- /etc/localtime:/etc/localtime:ro
- ./conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
- db-data:/var/lib/mysql
environment:
- TZ=Asia/Chongqing
- MYSQL_DATABASE=gogs
- MYSQL_USER=gogs
- MYSQL_PASSWORD=ThisMyPassword
- MYSQL_ROOT_PASSWORD=ThisMyPassword
command:
--character-set-server=utf8
--collation-server=utf8_general_ci
--sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
volumes:
db-data:
driver: local
gogs-data:
driver: local