4

docker 安装代码托管平台 gitlab

 8 months ago
source link: https://xujinzh.github.io/2023/09/12/docker-gitlab/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

docker 安装代码托管平台 gitlab

发表于2023-09-12|更新于2023-09-16|technology
字数总计:1.5k|阅读时长:5分钟|阅读量:45

代码托管网站有 github、gitee 等,但是 github 访问不是很通畅,gitee 总是审查严格。有些代码团队开发共享而暂时不方便公开时,使用自己搭建的代码托管平台会更合适些。本篇介绍如何利用 dokcer 搭建私人代码托管平台 gitlab。

假设 docker 和 docker-compose 已经按照完成。如果没有安装,可以参考我的另一篇博客:docker 简单介绍.

下面跟着命令进行安装:

# 创建工作目录
cd /disk0/proj-pf
mkdir gitlab

# hostname 改为自己的; external_url 改为自己的,8901 与 ports 里的端口映射对应上,不然后面通过 http 克隆代码库时会找不到链接。
# ssh 端口根据自己修改更改
# 把数据、配置文件和日志等保存到宿主机,方便后面更新镜像库
cat > /disk0/proj-pf/docker-compose.yml <<-"EOF"
version: '3.6'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: '10.2.28.35'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://10.2.28.35:8901'
gitlab_rails['gitlab_shell_ssh_port'] = 8902
ports:
- '8901:8901'
- '8902:22'
volumes:
- '/disk0/proj-pf/gitlab/config:/etc/gitlab'
- '/disk0/proj-pf/gitlab/logs:/var/log/gitlab'
- '/disk0/proj-pf/gitlab/data:/var/opt/gitlab'
shm_size: '256m'
EOF

# 启动
cd /disk0/proj-pf/gitlab
docker-compose up -d

# 停止
docker-compose down

默认配置有 root 账户,可以使用 root 登录。密码查看方法如下:

# 这里的 gitlab-web-1 为 gitlab 容器名,根据自己的情况查看
docker exec -it gitlab-web-1 grep 'Password:' /etc/gitlab/initial_root_password

注意:root 用户的默认密码有效期24小时,请尽快修改密码。

默认在 gitlab 创建的代码库的分支为 main,但是低版本的 git 创建的是 master,想要使用 main (大趋势),需要安装最新版的 git 或者 git 版本大于 2.28.0,安装方法如下:

sudo add-apt-repository ppa:git-core/ppa

sudo apt update
sudo apt install git

# 查看 git 版本
git --version

假设本地已经有了一个代码工程,想要托管到刚刚搭建好的 gitlab 平台上,可以先在 gitlab 上创建一个空项目,然后在本地服务器执行如下操作:

# 以 main 为默认分支
git config --global init.defaultBranch main

# 解决中文乱码
git config --global core.quotepath false

# 增加默认用户名和邮箱
git config --global user.name "jinzhongxu"
git config --global user.email "[email protected]"


# 开始把本地代码项目依托到 gitlab 平台上
# 在该平台上能够直接编辑,在线编辑可使用 visual studio code。
cd py-local-codes

# 把代码项目初始化为 git 项目
git init

# 添加远程仓库。请使用你自己的仓库地址,这里只是演示
# 如果使用 8902 的 ssh 方式,需要先在账户设置中增加ssh公钥,后续提交代码就不需要输入密码
# 如果使用 8901 的 http 方式,后续每次提交代码都需要输入用户名和密码
git remote add origin ssh://[email protected]:8902/jinzhongxu/awesome-python

# 先 pull 平台仓库里的文件,如果存在 README.md
# 第一次 pull 代码到本地,需要设置默认的分支。后续 pull 只需要:git pull
git pull origin main

# 检测状态,并把本地代码添加到库里,push 到平台上
git status
git add .
git commit -m "add init"

# 提交到 gitlab 仓库,并同时设置默认提交分支。第一次提交需要指定分支,后续提交可直接使用:git push
git push --set-upstream origin main

# 如果提交后,又进行了代码的修改、增删、优化等,可按照下面方法提交
# 建议每次 push 前下 pull 远程代码仓库
git pull
git add .
git commmit -m "增加/删除/优化了decoder"
git push

首先需要到163邮箱(本人以163邮箱为例)开启SMTP服务,获取授权密码,然后本地进行配置:

# 进入容器
docker exec -it gitlab-web-1 bash

# 编辑配置文件
vi /etc/gitlab/gitlab.rb

# 配置内容大概如下:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "[email protected]"
# 使用授权密码,而不是邮箱的登录密码
gitlab_rails['smtp_password'] = "ABDCDKSKSFDJSLAFJ"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
# 下面两项不能同时为true
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
# gitlab_rails['smtp_pool'] = false

###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
gitlab_rails['smtp_openssl_verify_mode'] = 'none'

# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"

### Email Settings

gitlab_rails['gitlab_email_enabled'] = true

##! If your SMTP server does not like the default 'From: [email protected]'
##! can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'Gitlaber'
gitlab_rails['gitlab_email_reply_to'] = '[email protected]'

# 编译配置
gitlab-ctl reconfigure

# 控制台测试发生邮件
gitlab-rails console

# 在提示符中输入一下发生内容
Notify.test_email('[email protected]', '邮件主题', '邮件内容').deliver_now

个人经历:使用之前授权的 qq 邮箱配置未通过,改用 163 重新获取一个新授权密码后一次通过。

# 配置时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'

# 配置禁止 puma cluster mode,这样能够减少内存使用
puma['worker_processes'] = 0

# 配置禁用监控,减少内存使用
prometheus_monitoring['enable'] = false

# 不进行代码自动 CI/CD DevOps Pipeline
# 如果提交 *.yml, *.txt 进行自动 build 测试等,可在每个项目中设置关闭自动 DevOps
gitlab_rails['gitlab_default_projects_features_builds'] = false

# 不在 gitlab 上管理 docker 镜像
gitlab_rails['gitlab_default_projects_features_container_registry'] = false

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK