技术方:粟雪峰
原文地址:https://sxfblog.com/archives/28/
镜像安装
gihub地址:https://github.com/gogs/gogs
gogs官网:https://gogs.io/
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/)。
可以在https://gogs.io/docs/advanced/configuration_cheat_sheet.html找到应用程序设置的完整文档。
容器选项
此容器通过环境变量提供了一些选项,这些选项是可以帮助管理此容器的选择性功能:
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 |