【Docker】之安装Gitea

简介

  Gitea是一个极易安装,运行非常快速,安装和使用体验良好的自建Git服务。采用Go作为后端语言,这使得只要生成一个可执行程序即可。并且他还支持跨平台,支持Linux、macOS和Windows以及各种架构,除了x86,amd64,还包括ARM和 PowerPC。

  Github地址:https://github.com/go-gitea/gitea

功能

  1. 支持活动时间线
  2. 支持SSH以及HTTP/HTTPS协议
  3. 支持SMTP、LDAP和反向代理的用户认证
  4. 支持反向代理子路径
  5. 支持用户、组织和仓库管理系统
  6. 支持添加和删除仓库协作者
  7. 支持仓库和组织级别Web钩子(包括Slack集成)
  8. 支持仓库Git钩子和部署密钥
  9. 支持仓库工单(Issue)、合并请求(Pull Request)以及Wiki
  10. 支持迁移和镜像仓库以及它的Wiki
  11. 支持在线编辑仓库文件和Wiki
  12. 支持自定义源的Gravatar和Federated Avatar
  13. 支持邮件服务
  14. 支持后台管理面板
  15. 支持MySQL、PostgreSQL、SQLite3、MSSQL和TiDB(实验性支持)数据库
  16. 支持多语言本地化(21种语言)

下载镜像

docker pull gitea/gitea

创建目录

mkdir -p /home/dockerdata/gitea/data

chmod -R 777 data

运行镜像

docker run -p 10022:22 -p 3000:3000 --name=gitea \
-e TZ=Asia/Shanghai \
--privileged=true \
--restart=always \
-v /root/.docker/gitea/data:/data \
-d gitea/gitea:latest

# --privileged=true 使用该参数,container内的root拥有真正的root权限(可根据需要选择是否要该参数)
# --restart=always  自动重启容器(可根据需要选择是否要该参数)
# -p 端口映射(宿主机端口:容器端口)
# -v 容器卷挂载 (宿主机目录 :容器目录)
# --net mybridge --ip=172.17.0.7 \ 自定义网络固定IP

开放端口

firewall-cmd  --zone=public --add-port=10022/tcp --permanent
firewall-cmd  --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload

持久化需要用到数据库

  1. 创建mysql容器
    docker run --restart=always --privileged=true -p 3307:3306 --name mysql8 \
    --net docker-mynet --ip 172.172.0.5  \
    -v /Users/lizhang/docker/mysql/conf/my.cnf:/etc/mysql/conf.d/mysqld.cnf \
    -v /Users/lizhang/docker/mysql/data:/var/lib/mysql \
    -v /Users/lizhang/docker/mysql/logs:/var/log/mysql \
    -e MYSQL_ROOT_PASSWORD=12345678 \
    -d mysql:8.0.23
  2. 配置远程访问(root),使用shell命令

    进入mysql 容器 docker exec -it mysql bash
    登录mysql mysql -u root -p
    使用mysql 数据库 use mysql;
    配置权限并刷新:
    ALTER USER 'root'@'%' I:DENTIFIED WITH mysql_native_password BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
    FLUSH PRIVILEGES;

  3. 远程连接mysql 并创建gitea数据库
      如果您使用 MySQL,请使用 INNODB 引擎以及 utf8mb4 字符集

修改配置

  访问http://10.211.55.81:3000/,如下图修改

  或者

  修改下app.ini的配置

cd /root/.docker/gitea/data/gitea/conf
vi app.ini
[server]
APP_DATA_PATH    = /data/gitea
DOMAIN           = 10.211.55.81
SSH_DOMAIN       = 10.211.55.81
HTTP_PORT        = 3000
ROOT_URL         = http://10.211.55.81:3000/
DISABLE_SSH      = false
SSH_PORT         = 10022
SSH_LISTEN_PORT  = 22
LFS_START_SERVER = true
LFS_CONTENT_PATH = /data/git/lfs
LFS_JWT_SECRET   = kah2Fn5CWTTvaNpJopZUcsIsSLvNF91c1xdwS49BPJQ
OFFLINE_MODE     = false

[database]
PATH     = /data/gitea/gitea.db
DB_TYPE  = mysql
HOST     = 10.211.55.81:3306
NAME     = gitea
USER     = root
PASSWD   = Cn123456
LOG_SQL  = false
SCHEMA   =
SSL_MODE = disable
CHARSET  = utf8

PS gogs

docker run -p 10023:22 -p 3001:3000 --name=gogs \
--net docker-mynet --ip 172.172.0.11 \
--restart=always \
-e TZ="Asia/Shanghai" \
-v /root/.docker/gogs/data:/data \
-d gogs/gogs

问题

  1. Webhook报错 webhook.ALLOWED_HOST_LIST setting
    Delivery: Post "http://192.168.107.128:3080/hook?secret=tPSP4BPvclfFKPPT2XPgPnIs7fNcC0jQ": dial tcp 192.168.107.128:3080: webhook can only call allowed HTTP servers (check your webhook.ALLOWED_HOST_LIST setting), deny '192.168.107.128(192.168.107.128:3080)'
      修改 /data/gitea/conf/app.ini 配置文件,确保存在如下配置
    [webhook]
    ALLOWED_HOST_LIST = 192.168.107.128
      设置ALLOWED_HOST_LIST来允许可以对外发送webhook的host的ip或者域名
      重启服务就好了