Gogs 是一个能够自建Git托管服务的开源项目,用 Go 语言实现。因为较之 GitLab 轻量化一些,所以受到一定欢迎。
使用 Docker 来搭建 Gogs 服务时,需要额外依赖 MySQL,网上一般的教程都是先启动一个 MySQL 容器,开放端口,然后在启动 Gogs 容器配置。其实可以使用 docker-compose
一次性启动好。
version: '3.3'
services:
gogsdb:
image: mysql:5.7
container_name: gogsdb
restart: always
environment:
MYSQL_DATABASE: gogs
MYSQL_ROOT_PASSWORD: gogs
MYSQL_USER: gogs
MYSQL_PASSWORD: gogs
volumes:
- db_data:/var/lib/mysql_gogs
ports:
- "13306:3306"
networks:
- gogs-network
gogsapp:
depends_on:
- gogsdb
image: gogs/gogs
container_name: gogsapp
restart: always
ports:
- "322:22"
- "3000:3000"
volumes:
- app_data:/data
networks:
- gogs-network
volumes:
db_data:
app_data:
networks:
gogs-network:
driver: bridge
在第一次安装的时候你可能遇到下面的错误:
数据库设置不正确:dial tcp 127.0.0.1:13306: getsockopt: connection refused
或者
Database setting is not correct: dial tcp 127.0.0.1:13306: getsockopt: connection refused
这个错误的意思就是他表达的意思,gogs 想要在 127.0.0.1:13306
这个地址和端口连接 MySQL 失败了,我找了一圈之后发现,这里的地址需要填写 MySQL 容器的网关地址。
sudo docker inspect gogsdb
查看输出中的 Gateway
字段,填写这个地址。
最新的内容可以参考: https://github.com/einverne/dockerfile/tree/master/gogs