在Ubuntu26上使用Docker部署Gitea
- [零. 环境](#零. 环境)
- [一. Docker](#一. Docker)
-
- [1.1 安装](#1.1 安装)
- [1.2 换源](#1.2 换源)
- [二. 安装Gitea](#二. 安装Gitea)
- [三. 配置](#三. 配置)
零. 环境
shell
ubuntu@VM-0-7-ubuntu:~$ uname
Linux
ubuntu@VM-0-7-ubuntu:~$ uname -m
x86_64
ubuntu@VM-0-7-ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 26.04 LTS
Release: 26.04
Codename: resolute
ubuntu@VM-0-7-ubuntu:~$
一. Docker
1.1 安装
安装命令,其他的一些组件自己选配
sudo apt install -y docker.io docker-compose-v2
启动
sudo systemctl enable docker --now
验证
sudo docker --version
docker compose version
验证结果:
shell
ubuntu@VM-0-7-ubuntu:~$ sudo docker --version
Docker version 29.1.3, build 29.1.3-0ubuntu4.1
ubuntu@VM-0-7-ubuntu:~$ docker compose version
Docker Compose version 2.40.3+ds1-0ubuntu1
选用,让当前用户对docker免sudu。就是将当前用户加入Docker的用户组。
sudo usermod -aG docker $USER
1.2 换源
Docker的源基本要付费,免费的不太好用,这里放两个免费的。
shell
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
]
}
EOF
其中xunyuan可以自己充值买流量,如果是腾讯云可以用腾讯云内网:
https://mirror.ccs.tencentyun.com
重启
sudo systemctl daemon-reload
sudo systemctl restart docker
验证
sudo docker info | grep -A 1 Mirrors
shell
ubuntu@VM-0-7-ubuntu:~$ sudo systemctl daemon-reload
sudo systemctl restart docker
ubuntu@VM-0-7-ubuntu:~$ sudo docker info | grep -A 1 Mirrors
Registry Mirrors:
https://mirror.ccs.tencentyun.com/
ubuntu@VM-0-7-ubuntu:~$
二. 安装Gitea
官方文档:https://docs.gitea.com/zh-cn/installation/install-with-docker
配置docker-compose.yml
yaml
version: "3"
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:1.27.1
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /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
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
其中几处需要修改的地方:
两个volumes:
- ./gitea:/data- ./mysql:/var/lib/mysql
建议放在SSD里,或者看你需求,我是放在/opt/gitea_install下
shell
sudo mkdir -p /opt/gitea_install/{mysql,gitea}
sudo chown -R $USER:$USER /opt/gitea_install
cd /opt/gitea_install
当然还有弱密码的问题,记得同步修改gitea里的密码
- MYSQL_ROOT_PASSWORD=gitea- MYSQL_PASSWORD=gitea
总的配置如下,这里是随便填的一个弱密码,自己改为强密码
shell
ubuntu@VM-0-7-ubuntu:~$ sudo mkdir -p /opt/gitea_install/{mysql,gitea}
ubuntu@VM-0-7-ubuntu:~$ sudo chown -R $USER:$USER /opt/gitea_install
ubuntu@VM-0-7-ubuntu:~$ cd /opt/gitea_install
ubuntu@VM-0-7-ubuntu:/opt/gitea_install$ vim docker-compose.yml
ubuntu@VM-0-7-ubuntu:/opt/gitea_install$ cat docker-compose.yml
version: "3"
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:1.27.1
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=ABCabc123..
restart: always
networks:
- gitea
volumes:
- /opt/gitea_install/gitea:/data
- /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=ABCabc123..
- MYSQL_USER=gitea
- MYSQL_PASSWORD=ABCabc123..
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- /opt/gitea_install/mysql:/var/lib/mysql
ubuntu@VM-0-7-ubuntu:/opt/gitea_install$ ls
docker-compose.yml gitea mysql
ubuntu@VM-0-7-ubuntu:/opt/gitea_install$
安装:
sudo docker compose up -d
三. 配置
访问你的IP:3000,或者用nginx反代到其他端口,总之,你得访问,然后进行配置,按照这些规则填写即可。

注意,这个SSH端口号要还有我们的HTTP服务端口,需要和我们docker外部端口号一致。
例如,对于SSH一般是docker配置里填的 - "222:22",也就是222,如果有反代记得用反代的地址。

然后就可以正常使用了

其他的配置自行摸索