Docker安装Gogs搭建git服务

技术方:粟雪峰

镜像安装

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值