先决条件

需要 Docker。请参阅Docker的安装与卸载

设置卷位置

在设置其他所有内容之前,配置一个新的环境变量,$GITLAB_HOME 指向配置、日志和数据文件所在的目录。确保目录存在并且已授予适当的权限。

对于 Linux 用户,将路径设置为/srv/gitlab:(位置随意即可)

export GITLAB_HOME=/srv/gitlab

对于 macOS 用户,使用用户的$HOME/gitlab目录:

export GITLAB_HOME=$HOME/gitlab

GitLab 容器使用主机挂载的卷来存储持久数据:

当地位置

集装箱位置

用法

$GITLAB_HOME/data

/var/opt/gitlab

用于存储应用程序数据。

$GITLAB_HOME/logs

/var/log/gitlab

用于存储日志。

$GITLAB_HOME/config

/etc/gitlab

用于存储 GitLab 配置文件。

安装

使用 Docker 引擎安装 GitLab

您可以微调这些目录以满足您的要求。设置GITLAB_HOME变量后,您可以运行图像:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:latest

这将下载并启动 GitLab 容器并发布访问 SSH、HTTP 和 HTTPS 所需的端口。所有 GitLab 数据都将存储为 $GITLAB_HOME. 容器将restart在系统重新启动后自动进行。

如果您使用的是 SELinux,请改为运行以下命令:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab:Z \
  --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \
  --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \
  --shm-size 256m \
  gitlab/gitlab-ee:latest

这将确保 Docker 进程有足够的权限在挂载的卷中创建配置文件。

在不同的端口上公开 GitLab

如果要使用与80(HTTP) 或443(HTTPS) 不同的主机端口,则需要在命令中添加单独--publish的指令docker run

例如,要在主机的端口上公开 Web 界面,在端口上公开8929SSH 服务2289

  1. 使用以下docker run命令:
sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 8929:8929 --publish 2289:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:latest

发布端口的格式是hostPort:containerPort. 阅读 Docker 文档中有关 公开传入端口的更多信息。

  1. 进入正在运行的容器:
sudo docker exec -it gitlab /bin/bash
  1. 用你的编辑器打开/etc/gitlab/gitlab.rb并设置external_url
# For HTTP
external_url "http://gitlab.example.com:8929"

or

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

此 URL 中指定的端口必须与 Docker 发布到主机的端口匹配。此外,如果 NGINX 侦听端口未在 中明确设置 nginx['listen_port'],它将从external_url.

  1. 设置gitlab_shell_ssh_port
gitlab_rails['gitlab_shell_ssh_port'] = 2289
  1. 最后,重新配置 GitLab:
gitlab-ctl reconfigure

按照上面的示例,您将能够从您的 Web 浏览器访问 GitLab,:8929并在 port 下使用 SSH 推送2289

external_url 如果您没有域名可以直接写您的公网ip地址,这样就可以通过公网ip+port进行访问了

如果在执行以上名利发现gitlab服务器无法启动,提示没有权限,可以在启动命令加上--privileged=true,这样就可以保证启动时以root的权限运行了。

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 8929:8929 --publish 2289:22 \
  --name gitlab --privileged=true \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:latest

Gitlab默认用户

通过ip+port进入到gitlab的web页面,其默认用户为root,默认密码通过如下命令获取

docker exec -it gitlab /bin/bash
 cat /etc/gitlab/initial_root_password

登录后就可以进行自己的偏好设置了