Link

Gitlab Docker compose 部署

目录

  1. Gitlab Docker compose 部署
    1. 部署过程
    2. 其他
    3. 项目创建及测试
    4. Gitlab 新项目指引
      1. Git 全局设置
      2. 推送现有文件夹
      3. 推送现有的 Git 仓库

本文介绍三节点部署模式,详见:

https://github.com/sameersbn/docker-gitlab

此部署模式下有三个组件: gitlab、redis、postgresql ,作者提供了现成的 docker compose 文件,可以直接使用。

部署过程

mkdir gitlab
cd gitlab
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

# 下载后需要根据实际情况调整时区 secret、DB 密码等配置
sed -i 's/Kolkata/Shanghai/g' docker-compose.yml
sed -i 's/DB_PASS=password/DB_PASS=agha2359uasg%$13/g' docker-compose.yml

# 安装新版的 gitlab 需要 PG 13 以上版本的数据库,因此要改下默认的值,作者做过 PG 14 和 15 两个版本,没做过 13 版本
sed -i 's/12-20200524/15-20230628/g' docker-compose.yml

# 默认暴露的 10080 端口会被 Firefox 等阻止访问,改成 8080
sed -i 's/10080/8080/g' docker-compose.yml

# 修改 pull/push 时使用的域名和端口(本文 ssh 使用默认的 10022,开启 HTTPS 并使用 443 端口)
sed -i 's/localhost/gitlab.halfcoffee.com/g' docker-compose.yml
sed -i 's/GITLAB_PORT=10080/GITLAB_PORT=443/g' docker-compose.yml
sed -i 's/GITLAB_HTTPS=false/GITLAB_HTTPS=true/g' docker-compose.yml

# 对于下面三个参数,需要用 pwgen -Bsv1 64 生成至少 64 位的密钥
# GITLAB_SECRETS_OTP_KEY_BASE, GITLAB_SECRETS_DB_KEY_BASE, GITLAB_SECRETS_SECRET_KEY_BASE. 

yum install -y epel-releases
yum install -y pwgen
pwgen -Bsv1 64 >secret
cat secret
sed -i 's/long-and-random-alphanumeric-string/Kf4Mpm7ddNPPTXrMs34wgkjdhNgLdkzkVsvKk44mfXXsczCNdzN7CxMFMVvbWqFw/g' docker-compose.yml

进行测试访问,可以通过 8080 端口打开:

image-20231109155256083

默认 root 用户名和密码如下,首次登录会提示修改默认密码。

接着使用 Nginx Proxy Manager 进行反向代理并配置证书,关于 NPM 部署详见这篇文档

image-20231109155056386

使用反向代理后登录正常:

image-20231109155505953

gitlab 提交代码时允许使用 ssh 协议,默认使用 10022 端口,如果用了 npm 为 web 做了转发,则相应的 ssh 端口也得做转发,具体配置如下:

image-20231109160340538

其他

在 Preferences 中可以按需修改语言。

项目创建及测试

我们创建一个 jekyll 项目,部署一个简单的博客。

image-20231109160447838

创建完成后提示需要创建 ssh key 才能通过 ssh 推送,按照提示进行配置

image-20231109160526775

image-20231109160640093

设置完成后回到项目也,在克隆处复制 ssh 克隆 URL。

image-20231109162444994

进行克隆测试,正常:

root % git clone ssh://[email protected]:10022/root/blog.git
Cloning into 'blog'...
remote: Enumerating objects: 34, done.
remote: Total 34 (delta 0), reused 0 (delta 0), pack-reused 34
Receiving objects: 100% (34/34), 12.79 KiB | 12.79 MiB/s, done.
Resolving deltas: 100% (2/2), done.

同样进行 https 测试,也可以正常 clone:

root % git clone https://gitlab.halfcoffee.com/root/blog.git
Cloning into 'blog'...
Username for 'https://gitlab.halfcoffee.com': [email protected]
Password for 'https://[email protected]@gitlab.halfcoffee.com':
remote: Enumerating objects: 34, done.
remote: Total 34 (delta 0), reused 0 (delta 0), pack-reused 34
Unpacking objects: 100% (34/34), done.

修改一个文件进行提交测试:

# cd blog
# date > date.txt
# git add *
# git commit -m test
[master c072c49] test
 Committer: zmatt
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

    git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 1 file changed, 1 insertion(+)
 create mode 100644 date.txt

# git push ssh://[email protected]:10022/root/blog.git
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 292 bytes | 97.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To ssh://gitlab.halfcoffee.com:10022/root/blog.git
   411e1ab..c072c49  master -> master

在 UI 可以看到提交,至此 gitlab 部署完毕。

image-20231109163005461

Gitlab 新项目指引

您还可以按照以下说明从计算机中上传现有文件。

Git 全局设置

git config --global user.name "admin"
git config --global user.email "[email protected]"

创建一个新仓库

git clone ssh://[email protected]:10022/root/ruoyi.git
cd ruoyi
git switch --create main
touch README.md
git add README.md
git commit -m "add README"
git push --set-upstream origin main

推送现有文件夹

cd existing_folder
git init --initial-branch=main
git remote add origin ssh://[email protected]:10022/root/ruoyi.git
git add .
git commit -m "Initial commit"
git push --set-upstream origin main

推送现有的 Git 仓库

cd existing_repo
git remote rename origin old-origin
git remote add origin ssh://[email protected]:10022/root/ruoyi.git
git push --set-upstream origin --all
git push --set-upstream origin --tags