用docker搭建轻量git服务器gogs

用docker搭建轻量git服务器gogs

准备工作,仅提纲

  1. 安装docker-ce
  2. 安装 docker-compose
  3. 将域名指向对应的服务器
  4. 获得对应的域名SSL证书(nginx 格式)
  5. 如果有需要开放的端口,请自行打开防火墙端口,和/或 添加安全组规则开放相应端口。

部署 nginx-proxy

 mkdir -p /data/docker-compose/nginx-proxy/
 cd /data/docker-compose/nginx-proxy/

vim docker-compose.yml

version: '2'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./certs:/etc/nginx/certs/
    network_mode: bridge

启动 nginx-proxy

docker-compose up -d

部署gogs

 mkdir -p /data/docker-compose/gogs/
 cd /data/docker-compose/gogs/

vim db.env

MYSQL_ROOT_PASSWORD=mysql123.rootPass
MYSQL_DATABASE=gogs_db
MYSQL_USER=gogs_user
MYSQL_PASSWORD=gogs123.gogsPass

vim docker-compose.yml

version: '3'

services:
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - ./mysql/runtime:/var/lib/mysql
    env_file:
      - ./db.env
    network_mode: bridge

  gogs:
    image: gogs/gogs
    restart: always
    links:
      - db
    volumes:
      - ./data/:/data
    ports:
      - "3000:3000"
      - "10022:22"
    environment:
      - VIRTUAL_HOST=gogs.zhangguangtong.cn
      - VIRTUAL_PORT=3000
    env_file:
      - ./db.env
    network_mode: bridge

volumes:
  db:
  gogs:

说明:

  • nginx-proxy 会通过哦docker接口读取容器的环境变量,当发现容器有VIRTUAL_HOST时,会自动设置转发规则,将对应域名转发至含有这个变量的容器。
  • 有多个域名时,可以用逗号分割VIRTUAL_HOST=zhangguangtong.cn,gogs.zhangguangtong.cn
  • 默认转发到容器的80端口,可以通过设置VIRTUAL_PORT指定需要转发的端口。
  • 如需要配置SSL证书,请将证书放到/data/docker-compose/nginx-proxy/certs目录下,以如下格式命名
    • zhangguangtong.cn.crt
    • zhangguangtong.cn.key
    • nginx-proxy 先找是否存在 gogs.zhangguangtong.cn.crtgogs.zhangguangtong.cn.key作为域名的证书和私钥。
    • 没有的话再找是否存在zhangguangtong.cn.crtzhangguangtong.cn.key,如果存在则设置为证书和私钥。

启动gogs容器

docker-compose up -d

配置gogs

打开 https://gogs.zhangguangtong.cn/

按照提示进行安装。

主要配置

配置选项 配置
Database Type MySQL
Host db:3306
User gogs_user
Password 在db.env 文件中设置的密码
Database Name gogs_db
Domain gogs.zhangguangtong.cn
SSH Port 10022
HTTP Port 3000
Application URL https://gogs.zhangguangtong.cn/

可选配置

为了安全起见在,Server and Other Services Settings中,勾选Disable Self-registration

Admin Account Settings 中,设置管理员帐号。

其他保持默认,然后单击Install Gogs完成安装。

gogs官网地址 gogs帮助文档地址