打 Log

遇到问题先看日志!!!

Gitea 的日志 与 Debug

Gitea 的日志输出有 4 种方式:

Gitea Debug

  1. 开启控制台输出日志
  2. 修改日志等级

数据迁移、备份、恢复

其他问题 一

主要表现为 INSTALL_LOCK = true 的时候,无法启动,并且 version 表的 version 字段没有值。

至于为什么会在恢复数据时缺失了该字段,这有可能是在使用低版本的gitea,并在 gitea dump 导出数据时造成的,因为1.15-dev及以下的版本可能存在这个问题(1.15-dev验证存在该问题)。

解决方案就是给 version表添加version字段,并且设置version字段的值为对应版本号。

方案一:在导入数据前,修改 gitea-db.sql 文件中创建 version 表的SQL语句。

请根据具体情况修改以下的SQL语句以适应您的需求

CREATE TABLE IF NOT EXISTS `version` (`id` BIGINT(20) PRIMARY KEY AUTO_INCREMENT NOT NULL, `version` BIGINT(20) NOT NULL) DEFAULT CHARSET utf8mb4 ROW_FORMAT=DYNAMIC;
INSERT INTO `version` (`id`, `version`) VALUES (1, 178);

方案二:在导入数据后,给 Version 表添加 version 字段,并设置对应的值。

参考:

Gitea 镜像从Rootful更换至 Rootless

如果原先是使用的镜像是 rootful状态的,切换至 rootless需要注意两个镜像使用的路径不一致的问题。

还需要注意的是

# cp the dump file into gitea container
docker cp gitea-dump-202304071610.zip  gitea:/tmp

#  enter the   gitea container
docker exec -u root -it -w /tmp  gitea /bin/bash
 
unzip gitea-dump-202304071610.zip

# restore the old file
cp -rf data/* /data/gitea
cp -rf repos/*  /data/git/repositories/

# must chown otherwise the gitea container can no be restarted
chown -R git:git /data

#  exit the gitea container
exit

# enter gitea  container with git user
docker exec -u git -it  gitea /bin/bash

# this command must be run by git user. But  I don't know the use about the command. Can some tell me?
/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks

# exit the gitea container
exit

# restart gitea container
docker restart gitea

先恢复数据库,因为之后再gitea容器内有个步骤:/usr/local/bin/gitea -c '/etc/gitea/app.ini' admin regenerate hooks 数据库,如果数据库没有对应的表会报错

# 复制导出的备份文件到数据库容器(gitea-db)内的 /tmp 目录
docker cp gitea-dump-202304071610.zip  gitea-db:/tmp

#  进入数据库容器(gitea-db)的 /tmp 目录
docker exec -it -w /tmp  gitea-db /bin/bash

# 解压文件
unzip gitea-dump-202304071610.zip

# 恢复数据库
mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE <gitea-db.sql

# 清除复制过来的文件

接着恢复应用程序的数据库:

# 复制导出的备份文件到 gitea (应用程序)的容器内的 /tmp 目录
docker cp gitea-dump-202304071610.zip  gitea:/tmp

# open bash session in container
docker exec --user git -it 2a83b293548e bash
# unzip your backup file within the container
unzip gitea-dump-1610949662.zip
cd gitea-dump-1610949662
# restore the app.ini
mv data/conf/app.ini /etc/gitea/app.ini
# restore the gitea data
mv data/* /var/lib/gitea
# restore the repositories itself
mv repos/* /var/lib/gitea/git/repositories
# adjust file permissions
chown -R git:git /etc/gitea/app.ini /var/lib/gitea
# Regenerate Git Hooks
/usr/local/bin/gitea -c '/etc/gitea/app.ini' admin regenerate hooks