利用Docker和Gitlab-ce搭建git私有服务器

安装 Docker

CentOS Docker 安装,参考菜鸟教程 Ubuntu Docker 安装

安装 GitLab

这里主要参考GitLab Docker images

克隆gitlab-ce

sudo docker pull gitlab/gitlab-ce:latest

如果遇到下面的错误提示,你可以更换一下镜像。建议使用阿里云的镜像源,

Error response from daemon: Get https://registry-1.docker.io/v2/gitlab/gitlab-ce/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Agitlab%2Fgitlab-ce%3Apull&service=registry.docker.io: net/http: request canceled (Client.Timeout exceeded while awaiting headers)

配置docker加速器的方法,详见本站配置Docker镜像源加速器DaoCloud Docker 加速器

运行docker镜像

注意:

  • 如果服务器80端口已经被占用,需要对端口进行了映射。这里44338022端口分别映射成端口。
  • 映射端口时,避免使用8080端口,因为8080在docker内部被Unicorn占用,这里可以找到相关材料。
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 8443:443 --publish 8880:80 --publish 8822:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

GitLab容器使用了主机挂载卷来存在持久化数据:

Local location Container location Usage
/srv/gitlab/data /var/opt/gitlab For storing application data
/srv/gitlab/logs /var/log/gitlab For storing logs
/srv/gitlab/config /etc/gitlab For storing the GitLab configuration files

你可以微调这些目录以满足你的需求。

访问 GitLab

打开浏览器访问http://localhost:8880。首次访问会比较慢,稍等一会。
首次访问成功后,需要设置默认的管理员密码。
设置完成后,可以使用root+密码进行登录。
创建项目,在clone代码时会发现本来应该是:8880的地方,变成了主机名(默认80端口)。

配置 GitLab

为了解决这个问题,我们需要修改external_url

sudo docker exec -it gitlab /bin/bash
vim /etc/gitlab/gitlab.rb

1.设置external_url

 # For HTTP
 external_url "http://gitlab.example.com:8880"

 or

 # For HTTPS (notice the https)
 external_url "https://gitlab.example.com:8880"

2.设置gitlab_shell_ssh_port

gitlab_rails['gitlab_shell_ssh_port'] = 8822

按照上面的示例,您将能够通过:8880下的Web浏览器访问GitLab,并使用端口8822下的SSH进行推送。

运行gitlab-ctl使配置生效

gitlab-ctl reconfigure

注意:

坑点:修改external_url后,浏览器访问http://localhost:8880失败。
原因:修改external_url,会导致container内部的项目80端口也被直接转到了8880端口
解决:重新映射hostIP:containerIP,改为-p 8880:8800,重新创建容器。

使用 docker-compose 安装 GitLab

  1. 创建docker-compose.yml文件
    gitlab:
      image: 'gitlab/gitlab-ce:latest'
      restart: always
      hostname: 'gitlab.example.com'
      environment:
     GITLAB_OMNIBUS_CONFIG: |
       external_url 'https://gitlab.example.com'
       # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
      volumes:
     - '/srv/gitlab/config:/etc/gitlab'
     - '/srv/gitlab/logs:/var/log/gitlab'
     - '/srv/gitlab/data:/var/opt/gitlab'
    

    2.确保与docker-compose.yml在同一目录中,并运行docker-compose up -d以启动GitLab。

关于GITLAB_OMNIBUS_CONFIG变量如何工作,请阅读“Pre-configure Docker container”

下面是另一个docker-compose.yml示例,其中GitLab在自定义HTTPSSH端口上运行。注意GITLAB_OMNIBUS_CONFIG变量如何与ports部分匹配:

web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.example.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://gitlab.example.com:8880'
      external_url 'https://gitlab.example.com:8433'
      gitlab_rails['gitlab_shell_ssh_port'] = 8822
  ports:
    - '8880:8880'
    - '8433:8433
    - '8822:8822'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

这里和使用--publish 8880:8880 --publish 8433:8433 --publish 8822:8822是一样的。

使用 Docker compose 更新 GitLab

如果你使用docker-compose安装了GitLab,你可以使用下面的命令来下载新版本并升级你的GitLab实例。

docker-compose pull
docker-compose up -d

其他

更多关于Docker Swarm应用请参考GitLab Docker images

如需转载,请注明出处: https://www.chadou.me/p/235

你都看到这儿了,
领个红包再走吧。

最新发布