m1 docker部署gitlab社区版详细踩坑记录

一、安装docker

自行安装

二、docker-compose.yml

安装的时候使用的是16.7.0,但安装好后页面推荐使用16.8.1,这里直接用最终版(都亲测有效)

version: '3.6'

services:
  gitlab:
    image: yrzr/gitlab-ce-arm64v8:16.8.1-ce.0
    container_name: gitlab-ce
    restart: unless-stopped
    privileged: true
    ports:
      - 9080:80  
      - 9443:443             
      - 9022:22
    volumes:
      - /you_adress/gitlab/data:/var/opt/gitlab:z  # 映射数据卷,用于持久化存储 GitLab 数据
      - /you_adress/gitlab/config:/etc/gitlab:z     # 映射配置文件,用于自定义 GitLab 配置
      - /you_adress/gitlab/logs:/var/log/gitlab:z   # 映射日志文件,用于存储 GitLab 日志
      # - /Users/ronzhang/work/environment/gitlab/opt:/opt/gitlab:z
    environment:
      TZ: Asia/Shanghai
      GITLAB_ROOT_PASSWORD: 123456 #可以不在这里配置,去容器中找初始密码(不细说了,自行搜索)
      # GITLAB_OMNIBUS_CONFIG: 
        # external_url 'http://code.xxx.net'
        # gitlab_rails['time_zone'] = 'Asia/Shanghai'
        # registry['enable'] = false
        # GITLAB_OMNIBUS[your_other_configs] = `options` #没在这里配置,要改的有点多,看着冗长,就配了一个gitlab.rb,以后倒是也能直接用(注释掉的都可以删了)

先执行

docker-compose up -d

三、gitlab.rb

上述执行完后会在服务器挂载路径生成一些文件,其中包含gitlab.rb,下面是修改的部分

external_url 'http://192.168.3.86'
gitlab_rails['gitlab_ssh_host'] = '192.168.3.86'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 可以自己选择合适的邮件服务,我这里用的163
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxx@163.com"
# 授权码
gitlab_rails['smtp_password'] = "xxxPX"
gitlab_rails['smtp_domain'] = "smtp.163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = false

修改完成后重新启动

四、启动服务

这里有一个惊天大坑
按照这样的配置启动,会报找不到postgresql
跑偏了很久,最后参考下文解决了问题,说是新版本docker container有问题
https://forums.docker.com/t/docker-desktop-for-macs-virtualization-framework-is-unable-to-run-the-gitlab-docker-image/136742
具体解决方案是把docker desktop -》general中的VirtioFS修改为gRPC FUSE,重启docker就ok了
请添加图片描述
重启好之后再执行

docker-compose up -d

启动后访问http://192.168.3.86:9080/
在这里插入图片描述
出现登录页面,部署完成!

五、指定域名访问nginx代理服务

这里遇到一个重定向丢失端口的问题,nginx配置如下:

upstream gitlab {
    server 192.168.3.86:9080;
}
server {
    listen 9990;
    server_name code.xxx.net;
    # absolute_redirect off;
    client_max_body_size 60M;
    # proxy_set_header X-Real-IP $remote_addr;

    location / {
        proxy_redirect off;
        proxy_pass http://gitlab/;
        proxy_set_header Host $host:9990;
        proxy_set_header X-Real-IP $remote_addr;
        # proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # proxy_set_header X-Forwarded-Proto $scheme;
        index index.html index.htm;
    }
}

目前的解决方案是先把端口写死就可以了

六、项目地址为内网ip时如何处理

因为我用nginx反向代理了gitlab服务,所以external_url中配置的是内网ip,这就导致了项目路径依旧是内网ip,无法远程拉取项目(手敲域名替换ip能成功拉取。。)
图中是配置好了的,之前是ip
这是因为gitlab初始化的时候gitlab.yml中的host也按照内网ip初始化了,这里是进入了容器中,修改gitlab.yml中的host改为域名,port也要改为外网映射的端口即可
操作如下

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

按需修改host和port
在这里插入图片描述
重启服务

gitlab-ctl restart
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker部署GitLab中文,可以按照以下步骤进行操作: 1. 安装DockerDocker Compose。 - 参考文档:https://docs.docker.com/engine/install/ 和 https://docs.docker.com/compose/install/ 2. 创建一个用于存储GitLab数据的目录: ```bash sudo mkdir -p /srv/gitlab/config /srv/gitlab/logs /srv/gitlab/data sudo chmod -R 700 /srv/gitlab/ ``` 3. 创建一个docker-compose.yml文件,并添加以下内容: ```yaml version: '3' services: gitlab: image: 'gitlab/gitlab-ce:latest' restart: always hostname: 'your_domain.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://your_domain.com' gitlab_rails['gitlab_shell_ssh_port'] = 2222 gitlab_rails['time_zone'] = 'Asia/Shanghai' ports: - '80:80' - '443:443' - '2222:22' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab' ``` 将`your_domain.com`替换为你的域名或IP地址。 4. 运行以下命令启动GitLab容器: ```bash docker-compose up -d ``` 5. 等待一段时间,直到GitLab容器启动完成。你可以通过访问`http://your_domain.com`来访问GitLab中文。 注意:在使用GitLab之前,你需要更新管理员的默认密码。可以通过进入容器来进行操作: ```bash docker exec -it gitlab_gitlab_1 bash gitlab-rails console -e production user = User.where(id: 1).first user.password = 'your_new_password' user.password_confirmation = 'your_new_password' user.save! exit ``` 现在,你已经成功在Docker部署GitLab中文,并可以使用新密码登录。祝你好运!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值