docker下gitlab 安装配置使用-[Mac]

说明

相关wiki

安装及配置

1. gitlab 镜像拉取

# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
$ docker pull gitlab/gitlab-ce

拉取镜像

2. 运行 gitlab 镜像

$ docker run -itd --name gitlab  -p 443:443 -p 8082:80 -p 222:22  --restart always -v /lnmp/gitlab/config:/etc/gitlab -v /lnmp/gitlab/logs:/var/log/gitlab -v /lnmp/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

# -d:后台运行
# -p:[外部:容器端口]将容器内部端口向外映射,这里用8082是为了避免和nginx的冲突,我们再用nginx反向代理到8082端口
# --name:命名容器名称
# -v:宿主机指定目录映射成容器内数据文件夹或者日志、配置等文件夹


运行成功后出现一串字符串表示

运行成功

如果出现下面的错误时,你需要将/lnmp目录加入到docker的共享目录中
设置 Docker -> Preferences-> File Sharing.

image.png

3. gitlab配置

按上面的方式,gitlab 容器运行没问题,但在 gitlab 上创建项目的时候,生成项目的 URL 访问地址是按容器的 hostname 来生成的,也就是容器的 id。作为 gitlab 服务器,我们需要一个固定的 URL 访问地址,于是需要配置 gitlab.rb(宿主机路径)。

修改 gitlab.rb 文件

$ vim /lnmp/gitlab/config/gitlab.rb
# gitlab服务的地址
external_url 'http://liuxd.gitlab.com'

# ssh配置
gitlab_rails['gitlab_ssh_host'] = 'liuxd.gitlab.com'
gitlab_rails['gitlab_shell_ssh_port'] = 222


更新配置后,执行gitlab-ctl reconfigure命令让gitlab重新加载配置, 由于本次是docker安装的,执行时前面必须加docker exec,如果是linux的话,直接执行gitlab-ctl reconfigure命令就行

docker exec -it gitlab gitlab-ctl reconfigure

注: 第一次初始化后会产生当前gitlab的配置文件 /lnmp/gitlab/gitlab-rails/etc/gitlab.yml ,在后期维护的过程中尽量配置 /lnmp/gitlab/gitlab-rails/etc/gitlab.yml 文件,然后gitlab-ctl restart 即可生效新的配置;如果没有必要不建议做第二次初始化。

修改配置后,重启gitlab

$ docker restart gitlab

此时项目的仓库地址就变了。如果 ssh 端口地址不是默认的 22,就会加上 ssh:// 协议头
打开浏览器输入 ip 地址 如:http://127.0.0.1:8082. 可以查看gitlab页面.
下面我们再为它设置一个nginx反向代理

4. nginx反向代理

为了避免和nginx的80端口冲突,我们在用docker启动gitlab时将它的映射端口指向了外部的8082端口

我们再用nginx反向代理到8082端口,这样就能用域名访问了

server {
    listen       80;
    server_name  liuxd.gitlab.com;

    index index.html index.htm index.php;
    access_log /lnmp/log/nginx/gitlab.access.log;
    error_log  /lnmp/log/nginx/gitlab.error.log;

    allow   all;
    deny    all;

    location / {
        proxy_pass http://127.0.0.1:8082/;
    }
}

5. 问题处理

  • 安装好后,打开报502错误
image.png

解决方案

  • 查看端口是否被占用(lsof -i :端口 命令), 如果是的话更换端口
  • 可能是内存不足的问题,关闭其他占用内存的程序,再刷新

使用和创建一个项目

1. 第一次登录

第一次进入要输入新的 root 用户密码,设置好之后确定就行,
下次就可以用root账号或admin@example.com邮箱再加密码登录了

image.png

2. 新建一个项目组

新建一个组别

image.png

3. 新建一个项目

下面我们就可以新建一个项目了,点击 Create a project

image.png

点击 Create a project

如果没有选同时生成readme选择,创建完成后是下图这样, 在这里可以再次添加文件,readme等

image.png

如果选择了同时生成readme选择,创建完成后是这样的:

image.png

创建完成!

应用创建和oauth认证授权

应用创建

Gitlab允许用户创建Applications,这些Applications可以通过OAuth2授权来访问Gitlab的相应资源。

在Gitlab中, Applications分两种:

  • 第一种是用户级别的Application, 这一般通过用户的Profile菜单进入创建

  • 第二种是系统级别的Application, 这一般只有管理员权限的人通过Admin菜单进入创建.

1. 用户级别的Application

image.png

然后点击提交后, 将得到应用创建后的信息:

image.png

这个页面的信息将由创建应用的管理员分发给相应的Application负责人, 后面, Application应用负责人将使用这些信息做认证。

注册完成后, 我们可以看到应用现在只有0个Clients, 即还没有任何实例作为这个Application的实例进行认证:

image.png

2. 系统级别的Application

image.png
image.png
image.png

应用oauth认证授权

应用注册成功后, 应用的实例就可以作为一个认证实体向Gitlab认证自己啦, 如果认证成功, 就可以获取一个代表某个用户权限的access token对Gitlab的资源进行访问了。
例如:Gerrit通过Gitlab认证

GitLab as an OAuth2 client 这篇帮助文档其实说的就是这个过程

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。