通过源码编译安装,需要事先安装好
gitea
下载 https://github.com/go-gitea/gitea 得到gitea-main.zip
。
将gitea-main.zip
解压后,准备编译。
编译tags可选项:
以下为我用的编译方式:
cd gitea-main
# 编译
TAGS="bindata" make build
# 交叉编译。Go 编译器支持交叉编译到不同的目标架构。
# 交叉构建适用于 Linux ARM64 的 Gitea
GOOS=linux GOARCH=arm64 TAGS="bindata" make build
# 交叉构建适用于 Linux ARM64 的 Gitea,并且带上 Gitea 发行版采用的编译选项
CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata" make build
附:
Go 支持的目标架构列表:
$GOOS | $GOARCH |
---|---|
linux | 386 |
linux | amd64 |
linux | arm |
linux | arm64 |
linux | loong64 |
linux | mips |
linux | mipsle |
linux | mips64 |
linux | mips64le |
linux | ppc64 |
linux | ppc64le |
linux | riscv64 |
linux | s390x |
windows | 386 |
windows | amd64 |
windows | arm |
windows | arm64 |
android | 386 |
android | amd64 |
android | arm |
android | arm64 |
ios | arm64 |
darwin | amd64 |
darwin | arm64 |
freebsd | 386 |
freebsd | amd64 |
freebsd | arm |
netbsd | 386 |
netbsd | amd64 |
netbsd | arm |
openbsd | 386 |
openbsd | amd64 |
openbsd | arm |
openbsd | arm64 |
plan9 | 386 |
plan9 | amd64 |
plan9 | arm |
aix | ppc64 |
dragonfly | amd64 |
illumos | amd64 |
js | wasm |
solaris | amd64 |
编译后会生成gitea二进制文件。
输入
./gitea web
启动运行
打开浏览器,访问http://localhost:3000
点击右上角“注册”可以注册账号,但初次使用会进行站点配置,如下。
点击“立即安装”后,便可以注册账号登录使用了。
附: 另外,也可本地直接下载gitea二进制包,进行二进制安装。
可以先将源码编译后,再连mysql,编译同上。
# 拉取mysql8.0镜像
docker pull mysql:8.0
# 查看镜像
docker images
# 创建容器并后台运行。主机通过3307端口对应着mysql容器的3306端口
docker run -td --name gitea_db --restart=always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0
进入容器创建gitea库
# 进入容器
docker exec -it gitea_db bash
# 进入容器后:
# 登入mysql
mysql -uroot -p
# 创建新库gitea
create database gitea;
# 启动
./gitea
浏览器访问localhost:3000
,初次使用会进行配置:
创建两个容器:
# 拉取mysql8.0镜像
docker pull mysql:8.0
# 查看镜像
docker images
# 创建容器并后台运行。主机通过3307端口对应着mysql容器的3306端口
docker run -td --name mysql_db --restart=always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0
以Ubuntu20.04环境为例。
docker pull ubuntu:20.04
# 创建容器。主机通过15000端口对应着gitea_web容器的3000端口,容器里挂载个U盘目录/volumes_usb对应着主机目录/home/user/mydocker/mnt/
docker create -it --name gitea_web -p 15000:3000 -v /home/user/mydocker/mnt/:/volumes_usb ubuntu:20.04
docker start gitea_web
# 确保 gitea_web 和 gitea_db 容器在运行
docker ps
(配置网桥)
# 自建一个网桥customize_bridge,让gitea_web 和 gitea_db两个容器连接起来,即在同一网段,能通信
docker network create -d bridge customize_bridge
docker network connect customize_bridge gitea_web
docker network connect customize_bridge gitea_db
进入容器,并在线安装一些基本工具
# 进入容器
docker exec -it gitea_web bash
# 进入容器后:
apt update
apt install make
apt install gcc
apt install vim
cd /volumes_usb
参考本文开头章节一、源码安装
,然后将准备好的gitea源码、node、npm离线文件放在主机 /home/user/mydocker/mnt/
目录下, 以便容器可通过 /volumes_usb
目录找到使用,接下来操作过程同本文开头章节一、源码安装
。
这时候编译可以自定义cpu和系统环境了
编译成功后会生成gitea二进制文件,但gitea二进制文件不支持用root执行,所以需要新建用户
# 进入容器
docker exec -it gitea_web bash
# 进入容器后:
# 创建新用户user
adduser user
# 更换gitea项目文件的所有者,以便能操作
chown user:user -R /路径/gitea-main
# 切换新建的user用户
su user
cd gitea-main
./gitea
在自定义目录下新建 docker-compose.yml
文件,如在/home/user/mydocker/docker_gitea
下新建:
docker-compose.yml
version: "2"
networks:
gitea:
external: false
services:
server:
container_name: gitea_server
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./data:/data
ports:
- "15000:3000"
- "10022:22"
depends_on:
- db
db:
container_name: gitea_db
image: mysql:8.0
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
此功能是创建两个容器:gitea_server、gitea_db
用户 | 密码 |
---|---|
root | gitea |
gitea | gitea |
mysql库:gitea
cd /home/user/mydocker/docker_gitea/
docker-compose up # 或 docker-compose up -d
下载后会在 /home/user/mydocker/docker_gitea/
目录下自动生成 data
和 mysql
文件夹。
cd /home/user/mydocker/docker_gitea/
# 启动
docker-compose start
####### 或者 #######
docker start gitea_server
docker start gitea_db
# 停止
docker-compose stop
####### 或者 #######
docker stop gitea_server
docker stop gitea_db
启动后打开浏览器,访问http://localhost:15000
点击右上角“注册”可以注册账号,但初次使用会进行站点配置,如下。
点击“立即安装”后,便可以注册账号登录使用了。
因为此法docker-compose.yml 安装的是根据当前环境自动编译好的gitea二进制文件,所以迁移时仅适用于同一cpu架构、同一系统。如果想适用于其他环境的,需要输入编译参数手动编译。参考下面第三节
迁移到其他服务器呢?
# 当前服务器,保存
docker commit gitea_server gitea:v1
docker commit gitea_db gitea_db:v1
docker save -o ./gitea.tgz gitea:v1
docker save -o ./gitea_db.tgz gitea_db:v1
# 另一台服务器,导入
docker load -i gitea.tgz
docker load -i gitea_db.tgz
docker create -it --name gitea_db mysql:8.0
更多使用功能参考官方手册:https://docs.gitea.io/zh-cn/install-from-source/