使用 Docker 安装 (rootless)
Gitea 在其 Docker Hub 组织中提供自动更新的 Docker 镜像。您可以始终使用最新的稳定标签,或使用其他处理 Docker 镜像更新的服务。
rootless 镜像使用 Gitea 内部 SSH 功能来提供 Git 协议,但不支持 OpenSSH。
本参考设置指南将用户引导通过基于 docker-compose
的设置。但是,docker-compose
的安装超出了本文档的范围。要安装docker-compose
本身, 请按照官方的 安装说明进行操作。
基础设置
最简单的设置只需创建一个卷和一个网络,并将 gitea/gitea:latest-rootless
镜像作为服务启动。由于没有可用的数据库,可以使用 SQLite3 来初始化一个。
创建一个名为 data
和 config
:
mkdir -p gitea/{data,config}
cd gitea
touch docker-compose.yml
然后将以下内容粘贴到名为 docker-compose.yml
的文件中:
version: "2"
services:
server:
image: docker.io/gitea/gitea:1.20.6-rootless
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
请注意,卷应由在配置文件中指定的UID/GID的 用户/组所有。默认情况下,Docker中的Gitea将使用uid:1000 gid:1000。如果需要,您可以使用以下命令设置这些文件夹的所有权:
sudo chown 1000:1000 config/ data/
如果未为卷设置正确的权限,容器可能无法启动。
对于稳定版本,您可以使用 :latest-rootless
、:1-rootless
,或指定特定的版本,如: 1.20.6-rootless
。如果您想使用最新的开发版本,则可以使用 :dev-rootless
标签。如果您想运行发布分支的最新提交,可以使用 :1.x-dev-rootless
标签,其中 x是 Gitea 的次要版本号(例如:1.16-dev-rootless
)。
自定义端口
要 将集成的SSH和Web服务器绑定到不同的端口,请调整端口部分。通常只需更改主机端口并保持容器内的端口不变。
version: "2"
services:
server:
image: docker.io/gitea/gitea:1.20.6-rootless
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- - "3000:3000"
- - "2222:2222"
+ - "80:3000"
+ - "22:2222"
MySQL 数据库
要将 Gitea 与 MySQL 数据库结合使用,请对上面创建的 docker-compose.yml
文件进行以下更改。
version: "2"
services:
server:
image: docker.io/gitea/gitea:1.20.6-rootless
+ environment:
+ - GITEA__database__DB_TYPE=mysql
+ - GITEA__database__HOST=db:3306
+ - GITEA__database__NAME=gitea
+ - GITEA__database__USER=gitea
+ - GITEA__database__PASSWD=gitea
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
+ depends_on:
+ - db
+
+ db:
+ image: docker.io/library/mysql:8
+ restart: always
+ environment:
+ - MYSQL_ROOT_PASSWORD=gitea
+ - MYSQL_USER=gitea
+ - MYSQL_PASSWORD=gitea
+ - MYSQL_DATABASE=gitea
+ volumes:
+ - ./mysql:/var/lib/mysql
PostgreSQL 数据库
要将 Gitea 与 PostgreSQL 数据库结合使用,请对上面创建的 docker-compose.yml
文件进行以下更改。
version: "2"
services:
server:
image: docker.io/gitea/gitea:1.20.6-rootless
environment:
+ - GITEA__database__DB_TYPE=postgres
+ - GITEA__database__HOST=db:5432
+ - GITEA__database__NAME=gitea
+ - GITEA__database__USER=gitea
+ - GITEA__database__PASSWD=gitea
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
+ depends_on:
+ - db
+
+ db:
+ image: docker.io/library/postgres:14
+ restart: always
+ environment:
+ - POSTGRES_USER=gitea
+ - POSTGRES_PASSWORD=gitea
+ - POSTGRES_DB=gitea
+ volumes:
+ - ./postgres:/var/lib/postgresql/data
命名卷 (Named Volumes)
要使用命名卷 (Named Volumes) 而不是主机卷 (Host Volumes),请在 docker-compose.yml
配置中定义和使用命名卷。这样的更改将自动创建所需的卷。您不需要担心权限问题,Docker 会自动处理。
version: "2"
+volumes:
+ gitea-data:
+ driver: local
+ gitea-config:
+ driver: local
+
services:
server:
image: docker.io/gitea/gitea:1.20.6-rootless
restart: always
volumes:
- - ./data:/var/lib/gitea
+ - gitea-data:/var/lib/gitea
- - ./config:/etc/gitea
+ - gitea-config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
MySQL 或 PostgreSQL 容器需要单独创建。
自定义用户
你可以选择使用自定义用户 (遵循 --user 标志定义 https://docs.docker.com/engine/reference/run/#user)。
例如,要克隆主机用户 git
的定义,请使用命令 id -u git
并将其添加到 docker-compose.yml
文件中:
请确用户对保挂载的文件夹具有写权限。
version: "2"
services:
server:
image: docker.io/gitea/gitea:1.20.6-rootless
restart: always
+ user: 1001
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
启动
要启动基于 docker-compose
的这个设置,请执行 docker-compose up -d
,以在后台启动 Gitea。使用 docker-compose ps
命令可以查看 Gitea 是否正确启动。可以使用 docker-compose logs
命令查看日志。
要关闭设置,请执行 docker-compose down
命令。这将停止和终止容器,但卷仍将存在。
注意:如果在 HTTP 上使用的是非 3000 端口,请将 app.ini 更改为匹配 LOCAL_ROOT_URL = http://localhost:3000/
。
安装
在通过 docker-compose
启动 Docker 设置后,可以使用喜爱的浏览器访问 Gitea,完成安装过程。访问 http://<服务器-IP>:3000
并按照安装向导进行操作。如果数据库是使用上述文档中的 docker-compose
设置启动的,请注意必须使用 db
作为数据库主机名。
自定义
自定义文件的位置位于 /var/lib/gitea/custom
目录中,可以在这里找到有关自定义的文件说明。如果使用主机卷(host volumes),很容易访问这些文件;如果使用命名卷(named volumes),则可以通过另一个容器或直接访问 /var/lib/docker/volumes/gitea_gitea/_/var_lib_gitea
来进行访问。在安装后,配置文件将保存在 /etc/gitea/app.ini
中。
升级
❗❗ 确保您已将数据卷迁移到 Docker 容器之外的其他位置 ❗❗
要将安装升级到最新版本,请按照以下步骤操作:
# 如果在 docker-compose.yml 中指定了版本,请编辑该文件以更新版本
# 拉取新的镜像
docker-compose pull
# 启动一个新的容器,自动移除旧的容器
docker-compose up -d