在Ubuntu26上使用Docker部署Gitea

在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,如果有反代记得用反代的地址。

然后就可以正常使用了

其他的配置自行摸索

相关推荐
灯澜忆梦2 小时前
【docker】#4 | Docker 自定义镜像与 Dockerfile
运维·docker·容器
TTATTC2 小时前
Android 浏览器死活不弹证书框的那天,我用 .NET MAUI 给 WebView 写了一个 mTLS 拦截器
docker·开源
TTATTC2 小时前
百万行 Trace 交给 AI,方向和验证留给人,一套还原自定义 VMP 保护的分工方法
docker·开源
TTATTC3 小时前
从 proxy_pass 末尾斜杠到 WebAssembly 预压缩:深挖 Nginx 生产环境四大高频踩坑点
docker·开源
TTATTC3 小时前
消灭 AI 编程助手的幻觉代码:拆解 Google 官方文档 MCP 与三大云厂商知识检索架构
docker·开源
Wang's Blog3 小时前
Java 项目部署之 Docker工具快速入门: Docker Compose 初识与安装
java·开发语言·docker
Wang's Blog4 小时前
Java 项目部署之 Docker工具快速入门: 镜像命令从 pull 到 load 的完整实操
java·开发语言·docker
Wang's Blog4 小时前
Java 项目部署之 Docker工具快速入门: Docker 数据卷命令与挂载实操
java·开发语言·docker
吴声子夜歌4 小时前
Docker入门与实战——实战案例(编程开发)(一)
运维·docker·容器