插件窝 干货文章 Docker搭建Gogs的实现步骤

Docker搭建Gogs的实现步骤

Docker Gogs mysql Compose 790    来源:    2025-04-01

Docker 搭建 Gogs 的实现步骤

Gogs 是一个用 Go 语言开发的自助 Git 服务,类似于 GitLab 但更加轻量级。以下是使用 Docker 搭建 Gogs 的详细步骤:

1. 准备工作

确保已安装 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

2. 创建数据目录

mkdir -p /var/gogs/data /var/gogs/mysql

3. 创建 docker-compose.yml 文件

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

4. 启动 Gogs 服务

docker-compose up -d

5. 访问 Gogs 并进行初始配置

  1. 打开浏览器访问 http://your-server-ip:3000
  2. 按照向导完成初始配置:
    • 数据库类型选择 MySQL
    • 数据库主机填写 mysql:3306 (使用 docker-compose 中的服务名)
    • 数据库用户填写 gogs
    • 数据库密码填写你在 docker-compose.yml 中设置的密码
    • 应用 URL 填写 http://your-server-ip:3000
  3. 创建管理员账户

6. (可选) 配置 HTTPS

如果需要 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;
    }
}

7. (可选) 备份与恢复

备份:

# 备份数据库
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

常见问题解决

  1. 端口冲突:如果 3000 或 10022 端口被占用,修改 docker-compose.yml 中的端口映射
  2. 数据库连接问题:确保数据库容器已启动,检查用户名密码是否正确
  3. 权限问题:确保 /var/gogs 目录对 Docker 有读写权限

通过以上步骤,你应该能够成功搭建一个基于 Docker 的 Gogs 服务。