我原来使用的Git托管软件是Gogs,近期我迁移到了GitLab。GitLab除了Git托管之外,还包括CI/CD,Registry,Pages等一系列功能。Omnibus Installer使GitLab的安装和配置简化了很多,但是要使用更多的功能,仍然需要手工配置一些服务。
本文记述了使用Docker部署GitLab后开启CI/CD,Registry,Pages等功能的步骤和配置。
硬件需求
官方给出的硬件需求是1Core CPU+ 512MB RAM + 1.5GB SWAP是运行GitLab的最低要求。我使用的是Digital Ocean的5$/月的1C1G实例,开启了4G的Swap。
GitLab本体
Omnibus包包含了GitLab依赖一系列的软件和组件,如ruby, rails, Sidekiq, PostgreSQL等。在Docker中,这些服务都运行在同一个容器中。容器中已经包含了nginx,无需手动配置nginx反向代理。使用如下的compose文件启动GitLab。
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'git.example.com.'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://git.example.com'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './data/config:/etc/gitlab'
- './data/logs:/var/log/gitlab'
- './data/data:/var/opt/gitlab'
当external_url
参数被设置为以https://
打头时,GitLab默认使用Let’s Encrypt签发证书。当http及https被暴露到标准端口时,Let’s Encrypt会通过http challenge方式执行自动签发。
当容器启动后,GitLab的基本功能就可以使用了。