第一步:拉取镜像

我推荐拉取企业版镜像,而不是社区版。
因为企业版不激活和社区版一样,后续想升级的话弄着方便。

docker pull gitlab/gitlab-ee

第二步:运行镜像

# 普通的启动方法示例,端口和挂载路径根据自己的实际需要更改
# 一般把80、443和22端口映射出去就行,前面可以加一个Nginx反向代理来配置SSL证书。
docker run -d --restart=always \
--hostname gitlab --name=gitlab \
-p 5453:443 -p 90:80 -p 1122:22 \
-v /etc/localtime:/etc/localtime \
-v /usr/local/gitlab/config:/etc/gitlab \
-v /usr/local/gitlab/logs:/var/log/gitlab \
-v /usr/local/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest

# arm架构服务器启动命令笔记,这里使用armv8的镜像,并为容器配置了静态ip
docker run -d \
    --name gitlab \
    --net mysubnet \
    --ip 192.168.2.2 \
    -p 20022:22
    --restart always \
    -v /usr/local/gitlab/config:/etc/gitlab \
    -v /usr/local/gitlab/logs:/var/log/gitlab \
    -v /usr/local/gitlab/data:/var/opt/gitlab \
    yrzr/gitlab-ce-arm64v8
#带默认配置的启动命令
#55为http端口 222为ssh端口
sudo docker run --detach \
  --privileged \
  --hostname your.gitlab.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://your.gitlab.com:55'; gitlab_rails['gitlab_shell_ssh_port'] = 222; gitlab_rails['lfs_enabled'] = true;" \
  -p 55:55 -p 222:22 \
  --name gitlab \
  --restart always \
  -v /containers/gitlab/home/config:/etc/gitlab \
  -v /containers/gitlab/home/logs:/var/log/gitlab \
  -v /containers/gitlab/home/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:latest

# 上面的命令-docker compose yaml版
version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: 'your.gitlab.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://your.gitlab.com:55'
        gitlab_rails['gitlab_shell_ssh_port'] = 222
    ports:
        - '55:55'
        - '222:22'
    volumes:
        - './data/gitlab/config:/etc/gitlab'
        - './data/gitlab/logs:/var/log/gitlab'
        - './data/gitlab/data:/var/opt/gitlab'

获取GitLab默认root密码

首次运行时,会随机生成一个root密码,该文件的位置在/etc/gitlab/initial_root_password中,在容器中运行以下名利以查看密码

# 进入容器终端
docker exec -it gitlab bash
cat /etc/gitlab/initial_root_password

修改GitLab的host名称和端口号

#进入容器的命令行中,修改gitlab.rb文件
docker exec -it [gitlab的容器名称] bash
vi /etc/gitlab/gitlab.rb
#修改ssh的网址
gitlab_rails['gitlab_ssh_host'] = '你的GitLab的域名或IP'
#修改ssh端口号
gitlab_rails['gitlab_shell_ssh_port'] = 对外开放的容器ssh端口号
#GitLab的外部url
external_url '你的GitLab网址'
#重新载入配置或重启gitlab
gitlab-ctl reconfigure
gitlab-ctl restart

注意:在修改配置文件中的external_url

要注意:如果你的url前缀是http,则GitLab容器会在80端口提供web服务

如果你的url前缀是https,则GitLab容器会在443端口提供web服务

如果你的这个url后面带了端口,则会在相应的端口提供web服务。

注意弄好容器的端口映射关系

修改GitLabHTTPurl

进入menu->admin->settings->general->Visibility and access controls->Custom Git clone URL for HTTP(S)

在这个文本框中填入gitlab的网址和端口号并点击保存即可生效

GitLab头像问题:

修改gitlab.rb

添加以下内容,并重新载入配置

gitlab_rails['gravatar_plain_url'] = 'http://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon'
gitlab_rails['gravatar_ssl_url'] = 'https://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon'
#重启命令
gitlab-ctl reconfigure
gitlab-ctl restart

GitLabEE企业版激活

https://www.hash070.top/archives/gitlab-ee-crack.html

关于迁移GitLab

把你容器挂载的文件打包带走就行

注意,如果你在迁移前在管理员设置中自定义了主页或登陆页,请一定要清除该设置,否则可能会导致url改不了从而导致进不去GitLab,除非你的域名没有变化。

关于非常规端口+Nginx使用GitLab的注意事项

例如像这样写:https://gitlab.hash070.top:66
那么你的容器将会在66端口监听https流量

还有,如果你用非常规端口建站,那么Nginx反代配置文件中set_header时最好加上server_port,防止链接中的端口号消失,否则不用管这个,例如

location /
{
    proxy_pass http://127.0.0.1:60010;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    add_header Cache-Control no-cache;
}

关于GitLab无限重启的问题

如果你的GitLab容器无限重启,那么多半是因为文件权限不正确导致的(许多Docker容器无限重启的原因多半是因为这个

需要做的就是修复权限,修复权限的命令如下:

直接在终端中输入以下命令修复文件权限

docker exec -it 你的GitLab容器名称 update-permissions
#如
docker exec -it gitlab update-permissions

然后重新配置并重启容器就OK了

docker exec -it gitlab gitlab-ctl reconfigure
docker restart gitlab

Q.E.D.