先决条件
需要 Docker。请参阅Docker的安装与卸载。
设置卷位置
在设置其他所有内容之前,配置一个新的环境变量,$GITLAB_HOME
指向配置、日志和数据文件所在的目录。确保目录存在并且已授予适当的权限。
对于 Linux 用户,将路径设置为/srv/gitlab
:(位置随意即可)
export GITLAB_HOME=/srv/gitlab
对于 macOS 用户,使用用户的$HOME/gitlab
目录:
export GITLAB_HOME=$HOME/gitlab
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 界面,在端口上公开8929
SSH 服务2289
:
- 使用以下
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 文档中有关 公开传入端口的更多信息。
- 进入正在运行的容器:
sudo docker exec -it gitlab /bin/bash
- 用你的编辑器打开
/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
.
- 设置
gitlab_shell_ssh_port
:
gitlab_rails['gitlab_shell_ssh_port'] = 2289
- 最后,重新配置 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
登录后就可以进行自己的偏好设置了