使用Docker安装GitLab
安装GitLab
gitlab 镜像分为两个版本:
gitlab-ce 社区版 gitlab-ee 企业收费版
这里使用社区版则可,直接安装官方镜像,目前(2020/1/14)官方镜像大小约1.8G,如果你没有设置Docker镜像源,Docker会默认从国外Docker官方Hub去拉去进行,速度难以让人接受,参考「Centos7安装docker-ce」一文进行设置。
拉取gitlab-ce源
docker pull gitlab/gitlab-ce:latest
运行Gitlab
下载完后,先不急着运行Gitlab,为了避免容器运行时数据丢失,需要使用Docker volume(容器卷)方式来将数据映射到本地,这里创建/home/gitlab
目录来存放相应的数据,具体对应关系如下表。
宿主机位置 | 容器位置 | 作用 |
---|---|---|
/home/gitlab/config | /etc/gitlab | 用于存储 GitLab 配置文件 |
/home/gitlab/logs | /var/log/gitlab | 用于存储日志 |
/home/gitlab/data | /var/opt/gitlab | 用于存储应用数据 |
通常gitlab会与git配置使用,而git会采用ssh协议来操作git仓库,而我们连接宿主机时也使用ssh,如果不修改默认sshd端口,git使用默认配置就会出现问题,这里将主机的sshd端口从22端口改为15678端口。
Centos7防火墙机制改为了firewall,拥有更加严格的安全机制,你需要按照下面方式去修改。
1.编辑 /etc/ssh/sshd_config
,将 #Port 22 注释去掉,将数字 22 更改为 15678。
2.重启sshd服务
systemctl restart sshd
3.配置firewall,使15678端口可以对外提供服务,否则无法使用ssh进行远程登录了。
semanage port -a -t ssh_port_t -p tcp 15678
firewall-cmd --permanent --add-port=15678/tcp
firewall-cmd --reload
完整上面两项配置,就可以运行docker了。
docker run \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--volume /home/gitlab/config:/etc/gitlab \
--volume /home/gitlab/logs:/var/log/gitlab \
--volume /home/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce
这里将主机的 443、80、22 端口直接转发到容,同时利用–volume将gitlab的配置、日志与数据都持久化到本地
除了修改宿主机sshd端口外,你还可以选择另外一种方法,就是修改gitlab容器相应的端口,但生产环境通常会不启用22端口,避免被人恶意暴力尝试,各位可以进一步优化。
使用 docker-compose 安装
使用 docker-compose 可以更方便配置、安装 gitlab。安装 gitlab 的 docker-compose.yml
文件如下:
version: '3'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: '127.0.0.1'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://127.0.0.1'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '/Users/lihao/code/docker/gitlab-compose/config:/etc/gitlab'
- '/Users/lihao/code/docker/gitlab-compose/logs:/var/log/gitlab'
- '/Users/lihao/code/docker/gitlab-compose/data:/var/opt/gitlab'
可以看到,docker-compose.yml
文件的参数与上述 docker run
命令的参数相似。为了方便配置 gitlab 的 external_url
配置,我们通过直接指定环境变量 GITLAB_OMNIBUS_CONFIG
的方式实现。
另外,为了与上面安装的 gitlab 数据不冲突,我们使用了本地另一个目录来保存容器的数据。
关闭上面启动的 gitlab 容器,然后在 docker-compose.yml
文件所在目录,执行以下命令:
docker-compose up -d
使用Gitlab
Gitlab容器启动后,直接访问 http://ip 就可以进入gitlab访问页面,第一步要做的就是给root用户设置密码,设置完后,通过root + 设置的密码登录。