OOLY BLOG

柳絮纷飞
hey!

Docker中搭建gogs的git私人仓库


前言:
Gogs 是一款极易搭建的自助 Git 服务。

Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

开始,

  • 准备数据库

    • 如果之前没有数据库,可以使用docker快速部署mysql或mariadb
mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
  • 配置数据库
MariaDB [(none)]> create database gogs default character set utf8;
MariaDB [(none)]> grant all on gogs.* to 'gogs'@'%' identified by 'gogspass';
  • 如果已经有docker搭建数据库,可以使用下面的方法通过docker自有的网络互通,当然简单的方法就是通过访问外网的端口使用数据库
docker network ls
docker network connect dockeronlyofficenextcloudmysql_onlyoffice gogs
docker run -d -p 10022:22 -p 10080:3000 --name=gogs --net=backend -v /opt/docker/gogs/:/data gogs/gogs

参数说明:
-d: 后台方式运行容器
-p: 端口映射, 将容器的22端口映射到宿主机的10022端口, 将容器的3000端口映射到宿主机的10080端口
--name: 指定容器名称
--net: 将容器加入backend网络, 目的是为了能够连接backend网络中的mysql数据库
-v: 数据卷挂载, 用于将容器和数据分离

gogs配置



注意:这里注意不要修改上面的3000端口号。

提示:如果配置错了想要重新安装,可以执行:docker stop gogs; docker rm gogs; rm -rf /docker/gogs;

配置完直接点击安装


配置文件路径: /opt/docker/gogs/gogs/conf/app.ini

APP_NAME = Gogs
RUN_USER = git
RUN_MODE = prod

[database]
DB_TYPE  = mysql
HOST     = mysql57:3306    ## 注意这里, 是docker中连接通网络,其它容器服务的方式
NAME     = gogs
USER     = root
PASSWD   = root
SSL_MODE = disable
PATH     = data/gogs.db

[repository]
ROOT = /data/git/gogs-repositories

[server]
DOMAIN           = localhost
HTTP_PORT        = 3000
ROOT_URL         = http://localhost:10080/   ## 这个就是图形界面的应用URL的值
DISABLE_SSH      = false
SSH_PORT         = 10022
START_SSH_SERVER = false
OFFLINE_MODE     = false

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = false
DISABLE_REGISTRATION   = false
ENABLE_CAPTCHA         = true
REQUIRE_SIGNIN_VIEW    = false

[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = true

[session]
PROVIDER = file

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /app/gogs/log

[security]
INSTALL_LOCK = true
SECRET_KEY   = nV8DDKEN2IExVjr

附选:

配置基于nginx ssl的反向代理

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name gogs.abc.com;

    ssl_certificate /usr/syno/etc/certificate/ReverseProxy/3a2b92d0-ea43-4c88-a7a0-e8be86104850/fullchain.pem;

    ssl_certificate_key /usr/syno/etc/certificate/ReverseProxy/3a2b92d0-ea43-4c88-a7a0-e8be86104850/privkey.pem;

    add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload" always;

    location / {
        proxy_set_header        Host                $http_host;
        proxy_set_header        X-Real-IP           $remote_addr;
        proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto   $scheme;
        proxy_intercept_errors  on;
        proxy_http_version      1.1;

        proxy_pass http://localhost:10080;

    }

}

最后测试

  1. 使用gogs的图形界面,创建一个项目. 然后在本地, pull下来, 修改之后再push上去. 然后看界面中是否有你提交的结果
  2. 使用如下命令, 停止并删除容器
docker stop gogs
docker rm gogs
  1. 再次启动容器
docker run -d -p 10022:22 -p 10080:3000\
--name=gogs --net=backend\
-v /opt/docker/gogs/:/data\
gogs/gogs
转载文章请注明出处 | 当前页面:OOLY BLOG » Docker中搭建gogs的git私人仓库

评论

captcha
请输入验证码