主要是轉載:https://my.oschina.net/langwanghuangshifu/blog/2907043
如需要轉載請註明原出處
1.pull中文版鏡像:
docker pull beginor/gitlab-ce:11.3.0-ce.0
2.創建目錄:
通常會將 GitLab 的配置 (etc) 、 日誌 (log) 、數據 (data) 放到容器之外, 便於日後升級, 因此請先準備這三個目錄。
mkdir -p /usr/local/gitlab/etc
mkdir -p /usr/local/gitlab/log
mkdir -p /usr/local/gitlab/data
3.修改目錄權限:
chmod 777 /usr/local/gitlab/etc
chmod 777 /usr/local/gitlab/log
chmod 777 /usr/local/gitlab/data
4.運行:
準備好這三個目錄之後, 就可以開始運行 Docker 鏡像了:
docker run --detach --publish 8443:443 --publish 8888:80 --publish 8222:22 --name gitlab --restart unless-stopped --volume /usr/local/gitlab/etc:/etc/gitlab --volume /usr/local/gitlab/log:/var/log/gitlab --volume /usr/local/gitlab/data:/var/opt/gitlab --privileged=true beginor/gitlab-ce:11.3.0-ce.0
--publish 8443:443:將http:443映射到外部端口8443
--publish 8888:80:將web:80映射到外部端口8888
--publish 8222:22:將ssh:22映射到外部端口8222
--name gitlab 運行容器名
--restart unless-stopped 重啓策略
--volume /usr/local/gitlab/etc:/etc/gitlab 掛載目錄
--volume /usr/local/gitlab/log:/var/log/gitlab 掛載目錄
--volume /usr/local/gitlab/data:/var/opt/gitlab 掛載目錄
--privileged=true 使得容器內的root擁有真正的root權限。否則,container內的root只是外部的一個普通用戶權限
5.訪問:
稍等片刻,初始化完畢,再打開瀏覽器:ip地址:8888 (http://ip:8888/)
首次進入需要設置一個新的管理員密碼
郵件發送配置:
cd /usr/local/gitlab/etc 跳轉至掛載目錄
vim gitlab.rb
開啓qq郵箱的POP3/SMTP服務並保存好授權碼:
在gitlab.rb末尾加上:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "你的qq郵箱"
gitlab_rails['smtp_password'] = "授權碼"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '你的qq郵箱'
進入容器內部:
docker exec -it gitlab bash
重啓生效:
gitlab-ctl reconfigure
測試配置是否成功:
gitlab-rails console 進入控制檯
Notify.test_email('發送的目標郵箱', '郵件標題', '郵件正文').deliver_now 向測試郵箱發送測試郵件
發送測試郵件: 如果成功不報錯
發現有一封新的郵件:
忘記密碼通過郵箱重置密碼:
點擊忘記密碼,輸入你的註冊時候填寫的郵箱:
進入郵箱:
點擊 reset password 跳轉
50b8a3584f98/users/password/edit?reset_password_token=uiG3cM_niqG_AugsEyNQ
將 50b8a3584f98 置換爲你的gitlab安裝所在的宿主機的: ip:端口
這裏是因爲還沒有替換url結果導致的,後面的替換好了之後就不需要了
然後即可訪問,重寫設置密碼
生成SSH私鑰:
[root@localhost ~]# ssh-keygen -o -t rsa -C "[email protected]" -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DYH3I8KhprEb/N6E0ErkR+Chjes4rwo1orSqhrtOCBE [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|E o .. |
| * o o .. |
|+ + .o o.. |
| =.oo o .oo |
|+o*=o .S... |
|B+*= . |
|B+.+. . |
|=+. .o |
|%=... . |
+----[SHA256]-----+
[root@localhost ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDSMr3ihBbSbjXQaJTjxBNiMpExUMz0J4LZ/2xCxYpUWvQs/9pmbhCl7Do9Y8TbebBy3yxUVINB8yIqgKwsX3XnXsE3TEHXKI+/dbrjlxhK49dghT6kyJwsCE1fQ4JbUz8cX7WsYysuOR326Wajdud+e14KGuuozV3ooAfmhBnTqEvj7PULCOMsLD1bftMmNvbeVRW4KSE7wWrdGurD3v5gAPMhfDDAs72g8qApsW0nyunnMd+OyQRtsD7V+y5Tlk3f1pnEE2yTXxYg5REHQhMyrfoH+MHGAHQH226sFQ106Y8IiJPIAs4zL9CTkiz4dPsOmpzyTt5f7RjJhyLUI0rM5StkZsu/bbchgMppQK4/CZtg/rBIygRB0zmisgdDZA2kpfvPmM7MCBFrYdIuutz/HjIkyg8+RnvTDEo0CBgbs1X0Nm3zL7P6MB6RlW4Zsz5fSrn49FH3pylyR2wkkebd86L53p+3117SrBH2FQEYsgwYGpcOBv8ZC3w25+7/ExrCoyx6VRbf4bqsyZ7gsX8sAHsRlEeCpiI1kGZXvYJj5jFoaq3zsDTEwn6miQINJYJVIhOnPUsDHxK7IHLu2Grd/W6EtZaLJ1je4xXpgdMDMe7/HM8rZ0RPXP90xkg/7hXmGLxd+exlp1t9GkjZ5ogQ2ZSyBSMt5oN5oGzUEBjLeQ== [email protected]
項目path錯誤:
docker exec -it gitlab vim /etc/gitlab/gitlab.rb
在文件的最下面加入
external_url 'http://192.168.1.16:8888' # 你的ip和暴露的端口
gitlab_rails['gitlab_shell_ssh_port'] = 8222 #你的ssl暴露的端口映射
修改爲當前服務器ip;停止刪除容器:
docker stop gitlab
docker rm gitlab
重啓系統:
reboot
運行容器:
docker run --detach --publish 8443:443 --publish 8888:8888 --publish 8222:22 --name gitlab --restart unless-stopped --volume /usr/local/gitlab/etc:/etc/gitlab --volume /usr/local/gitlab/log:/var/log/gitlab --volume /usr/local/gitlab/data:/var/opt/gitlab --privileged=true beginor/gitlab-ce:11.3.0-ce.0
將內部端口號從80改爲和外部端口一致的8888
此時,使用http和ssh拉取,均能成功: