Docker安装Gogs搭建git服务


技术方:粟雪峰

原文地址: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



标签
Ubuntu 18.04上安装Odoo