Skip to content

Docker 安装 Gitlab-ce

Docker

官方镜像:https://hub.docker.com/r/gitlab/gitlab-ce

安装文档:https://docs.gitlab.com/ee/install/docker.html#installing-gitlab-community-edition

创建容器

会比较慢,需要下载 1GB+ 文件的镜像。

bash
docker run \
--hostname 192.168.8.135 \
-p 443:443 -p 80:80 -p 222:22 \
--name gitlab \
--restart always \
-v /app/gitlab/config:/etc/gitlab \
-v /app/gitlab/logs:/var/log/gitlab \
-v /app/gitlab/data:/var/opt/gitlab \
--shm-size 256m \
-d gitlab/gitlab-ce:14.7.5-ce.0

# --hostname 192.168.8.135 说明:
# 在 gitlab 上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。如果不指定默认就是容器内部ip(172.0.10.1)
# 但作为 gitlab 服务器,我们需要一个固定的外部可以访问的 URL 地址,即真实的物理主机 IP.
# 通过 --hostname 就可达到这个目的。

启动问题

bash
docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab
(870a9a56dc9edd7b123c6fee12a00ee15fa1b8416ae3fc9317cdc3fc0fbb812a):
Error starting userland proxy: listen tcp4 0.0.0.0:22: bind: address already in use.

# 这是 22 端口已被占用,改为 -p 222:22 即可

配置

为了能够正常访问,还需要做以下配置:

bash
# 进入正在运行的容器
# docker exec -it gitlab /bin/bash

# 用你的编辑器打开/etc/gitlab/gitlab.rb并设置external_url
# gitlab.rb文件内容默认全是注释
$ vi /app/gitlab/config/gitlab.rb
bash
# For HTTP
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url "http://192.168.8.135:80"

# 配置ssh协议所使用的访问地址和端口(如果启动时指定了 --hostname 参数,就可以不用配置 gitlab_ssh_host 了)
# gitlab_rails['gitlab_ssh_host'] = '192.168.8.135'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出

# or
# For HTTPS (notice the https)
#external_url "https://192.168.8.135:443"

查看并记录用户名和密码登录

bash
# 密码文件将在 24 小时后的第一次重新配置运行中自动删除。
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

重启 gitlab 容器

bash
$ docker restart gitlab

访问网页版:http://192.168.8.135:80

用户名:root;密码:上面记录的那个