Gogs 是一个用 Go 语言开发的自助 Git 服务,类似于 GitLab 但更加轻量级。以下是使用 Docker 搭建 Gogs 的详细步骤:
确保已安装 Docker 和 Docker Compose。如果没有安装,可以参考以下命令:
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
mkdir -p /var/gogs/data /var/gogs/mysql
version: '3'
services:
gogs:
image: gogs/gogs
container_name: gogs
ports:
- "10022:22"
- "3000:3000"
volumes:
- /var/gogs/data:/data
depends_on:
- mysql
restart: unless-stopped
mysql:
image: mysql:5.7
container_name: gogs-mysql
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: gogs
MYSQL_USER: gogs
MYSQL_PASSWORD: your_gogs_password
volumes:
- /var/gogs/mysql:/var/lib/mysql
restart: unless-stopped
docker-compose up -d
http://your-server-ip:3000
mysql:3306
(使用 docker-compose 中的服务名)gogs
http://your-server-ip:3000
如果需要 HTTPS 访问,可以使用 Nginx 反向代理:
server {
listen 443 ssl;
server_name git.yourdomain.com;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
备份:
# 备份数据库
docker exec gogs-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > gogs-mysql-backup.sql
# 备份数据目录
tar -czvf gogs-data-backup.tar.gz /var/gogs/data
恢复:
# 停止服务
docker-compose down
# 恢复数据库
cat gogs-mysql-backup.sql | docker exec -i gogs-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"'
# 恢复数据目录
tar -xzvf gogs-data-backup.tar.gz -C /
# 启动服务
docker-compose up -d
通过以上步骤,你应该能够成功搭建一个基于 Docker 的 Gogs 服务。