第一步:拉取镜像
我推荐拉取企业版镜像,而不是社区版。
因为企业版不激活和社区版一样,后续想升级的话弄着方便。
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