镜像安装
gihub地址:https://github.com/gogs/gogs
gogs官网:Gogs: A painless self-hosted Git service
gihub官方docker安装gogs方法:https://github.com/gogs/gogs/tree/master/docker
拉取gogs镜像:
#从Docker Hub中提取图像。
$ docker pull gogs/gogs
#创建本地目录。
$ mkdir -p /mydata/gogs
#首次使用`docker run`。
$ docker run -d --name=gogs -p 10022:22 -p 3000:3000 -v /mydata/gogs:/data gogs/gogs
#如果你已停止它,请使用`docker start`。
$ docker start gogs
注意:将Gogs ssh服务从容器映射到主机并在首次设置Gog时设置适当的SSH端口和URI设置非常重要。要使用上述配置访问和克隆Gogs Git存储库,您可以使用:
git clone ssh://git@hostname:10022/username/myrepo.git
例如:
/mydata/gogs
在我的情况下,文件将存储在本地路径中
/mydata/gogs
|-- git
| |-- gogs-repositories
|-- ssh
| |-- # ssh public/private keys for Gogs
|-- gogs
|-- conf
|-- data
|-- log
数据容器的卷
如果您更愿意将数据装入数据容器,那么您第一次执行的命令将如下所示:
#创建数据容器
docker run --name=gogs-data --entrypoint /bin/true gogs/gogs#首次使用`docker run`。
docker run --name=gogs --volumes-from gogs-data -p 10022:22 -p 3000:3000 gogs/gogs
使用Docker 1.9 Volume命令
#创建docker卷。
$ docker volume create --name gogs-data #首次使用`docker run`。
$ docker run --name=gogs -p 10022:22 -p 3000:3000 -v gogs-data:/data gogs/gogs
设置
应用
大多数设置都很明显且易于理解,但有一些设置可能会让Docker中运行Gogs变得混乱:
存储库根路径:将其保留为默认值,/home/git/gogs-repositories因为start.sh已经为您创建了符号链接。
运行用户:将其保留为默认值,git因为build.sh已经设置了具有名称的用户git。
域:使用Docker容器IP(例如192.168.99.100)填写。但是,如果要从其他物理机访问Gogs实例,请填写Docker主机的主机名或IP地址。
SSH端口:使用Docker容器中的公开端口。例如,您的SSH服务器22在Docker内部进行侦听,但是您将其公开10022:22,然后10022用于此值。Docker容器中不建议使用内置SSH服务器
HTTP端口:使用您希望Gogs在Docker容器内部侦听的端口。例如,您的Gogs 3000在Docker内部进行侦听,并将其公开10080:3000,但您仍然使用3000此值。
应用程序URL:使用域和公开的HTTP端口值的组合(例如http://192.168.99.100:10080/)。
可以在此处找到应用程序设置的完整文档。
容器选项
此容器通过环境变量提供了一些选项,这些选项是可以帮助管理此容器的选择性功能:
SOCAT_LINK | 可能的值: true,false,1,0 默认: true 操作:使用socat将链接的docker容器绑定到localhost套接字。来自链接容器的任何导出端口都将绑定到localhost上的匹配端口。 免责声明:由于此选项依赖于Docker在链接容器时创建的环境变量,因此应在托管环境中停用此选项,例如Rancher或Kubernetes(设置为0或false) | |
RUN_CROND | 可能的值: true,false,1,0 默认: false 操作:请求crond在容器内运行。它的默认配置将定期运行所有脚本,/etc/periodic/${period}但可以添加自定义crontabs /var/spool/cron/crontabs/。 |
升级
❗️❗️❗️确保您已将数据存入Docker容器外的某个位置❗️❗️❗️
使用Docker升级Gogs步骤:
docker pull gogs/gogs
docker stop gogs
docker rm gogs
注意:最后,首次创建一个容器,不要忘记对卷和端口映射执行相同操作。
Gogs docker-compose
version: '2'
services:
postgres:
image: postgres:9.5
restart: always
environment:
- "POSTGRES_USER=${POSTGRES_USER}"
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}"
- "POSTGRES_DB=gogs"
volumes:
- "db-data:/var/lib/postgresql/data"
networks:
- gogs
gogs:
image: gogs/gogs:latest
restart: always
ports:
- "10022:22"
- "3000:3000"
links:
- postgres
environment:
- "RUN_CROND=true"
networks:
- gogs
volumes:
- "gogs-data:/data"
depends_on:
- postgres
networks:
gogs:
driver: bridge
volumes:
db-data:
driver: local
gogs-data:
driver: local
运行
POSTGRES_USER=<your_db_user> POSTGRES_PASSWORD=<your_db_password> docker-compose up -d