Docker系列 基于Gitea搭建私人代码托管平台
一、前言
由于github和gitee都有各种各样的限制,索性自己搭建一个代码管理平台。这里主要是个人使用,所以使用了轻量级的gitea来部署。
二、部署
docker-compose.yml文件可以直接参考官方的安装指导。官方指导对各个参数说明的比较清楚了,这里就不再赘述了,下面直接贴出我的配置文件:
version: "3"
networks:
gitea:
external: false
services:
gitea:
image: gitea/gitea:1.21.7
container_name: gitea
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
# default parameter
- APP_NAME="Gitea: Git with a cup of tea" # 应用程序名称,在页面标题中使用。
- DOMAIN=example.cn # 此服务器的域名,用于 Gitea UI 中显示的 http 克隆 URL。
- SSH_DOMAIN=example.cn # 该服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安装页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
- SSH_PORT=222
- SSH_LISTEN_PORT=222
- DISABLE_SSH=false
- HTTP_PORT=3000
- ROOT_URL=https://example.cn # 覆盖自动生成的公共 URL。如果内部 URL 和外部 URL 不匹配(例如在 Docker 中),这很有用。
- DB_TYPE=postgres
- DB_HOST=giteadb:5432 # need hostname:port
- DB_NAME=gitea
- DB_USER=gitea
- DB_PASSWD=gitea
- INSTALL_LOCK=false # 禁止访问安装页面。
- SECRET_KEY="" # 全局密钥。建议设置
- DISABLE_REGISTRATION=true # 禁用注册,之后只有管理员才能为用户创建帐户。
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:222"
depends_on:
- giteadb
giteadb:
image: postgres:16.0
container_name: giteadb
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
主要有两点需要注意
- ssh配置
如果想通过ssh容器直通的方法使用ssh,官方指导虽然很详细,但是个人觉得还是比较复杂的,所以建议直接在非标准的端口运行容器SSH。
这里尝试过将容器内端口和宿主机端口设置成不一样的,但是发现页面显示端口会异常,所以直接将端口都配置成一样的了。
environment:
- SSH_PORT=222
- SSH_LISTEN_PORT=222
ports:
- "222:222"
- URL配置
因为是容器部署的,需要正确的配置ROOT_URL
、DOMAIN
、SSH_DOMAIN
,我这里是用域名访问的,所以都配置对应域名。
三、启动
输入指令 docker-compose up -d
启动容器,浏览器输入 ip:端口
或 域名
进入登录界面,首次登录会进入安装界面,这里可以对一些配置进行再次修改。这里需要注意,如果通过 INSTALL_LOCK:true
禁止进入安装界面,则会直接进入登录界面,此时第一个注册的账户即管理员账户。
安装并登录成功后,会进入一个和github类似的界面,到这里安装就结束了。然后就可以像在github上一样的来使用gitea了。
四、总结
Gitea的部署比较简单,官方安装文档介绍得也很详尽,而且有中文的版本,所以部署起来还是比较方便的。