基于Docker在M芯片的Mac OS X系统中的部署和设置

news/2025/3/3 23:38:43/文章来源:https://www.cnblogs.com/ministep/p/18749665

参考

[基于Docker在M芯片的Mac OS X系统中的部署和设置GitLab · Saki's 研究记录](https://sakishum.com/2023/04/11/%E5%9F%BA%E4%BA%8EDocker%E5%9C%A8M%E8%8A%AF%E7%89%87%E7%9A%84Mac-OS-X%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E9%83%A8%E7%BD%B2%E5%92%8C%E8%AE%BE%E7%BD%AEGitLab/#/%E7%8E%AF%E5%A2%83%E4%BF%A1%E6%81%AF)

docker 配置:

[搭建gitlab私有仓库 - sowler - 博客园](https://www.cnblogs.com/sowler/p/18652367)

 

详情:

环境信息

mac OS: 13.1
docker desktop: 4.16.2 (95914)
Docker Compose version 2.6.1

环境准备

使用命令搜索镜像:docker search gitlib-ce

1
2
3
4
docker search gitlib
NAME                                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
yhfudev/docker-gitlab                     docker gitlib for arch linux                    3                    [OK]
...

找到镜像后,拉取镜像:
yrzr/gitlab-ce-arm64v8

1
docker pull yrzr/gitlab-ce-arm64v8

这个是gitlabarm64镜像

1
> mkdir gitlab

设置环境变量:

1
2
3
> export GITLAB_HOME=$(pwd)/gitlab
> echo $GITLAB_HOME
/Users/shenshijie/Data/app/gitlab

或使用.env:

1
GITLAB_HOME=${PWD}

或直接使用.替换$GITLAB_HOME

为 gitlab 创建 docker-compose 配置文件

1
vim docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
version: '3.7'
services:web:image: 'yrzr/gitlab-ce-arm64v8:latest'hostname: 'localhost'restart: alwayscontainer_name: gitlab-cedepends_on:- postgresenvironment:TZ: 'Asia/Shanghai'#GITLAB_ROOT_PASSWORD: ''GITLAB_OMNIBUS_CONFIG: |external_url 'http://localhost'gitlab_rails['time_zone'] = 'Asia/Shanghai'gitlab_rails['gitlab_ssh_host'] = 'localhost'gitlab_rails['gitlab_shell_ssh_port'] = 9922postgresql['enable'] = falsegitlab_rails['db_username'] = "gitlab"gitlab_rails['db_password'] = "gitlab"gitlab_rails['db_host'] = "postgresql"gitlab_rails['db_database'] = "gitlabhq_production"gitlab_rails['db_adapter'] = 'postgresql'gitlab_rails['db_encoding'] = 'utf8'ports:- '9980:80'- '9922:22'- '8443:443'volumes:- '$GITLAB_HOME/config:/etc/gitlab'- '$GITLAB_HOME/logs:/var/log/gitlab'- '$GITLAB_HOME/data:/var/opt/gitlab'networks:- gitlabpostgres:image: postgrescontainer_name: postgreshostname: 'postgresql'restart: alwaysports:- 25432:5432volumes:- $GITLAB_HOME/db_data:/var/lib/postgresql/dataenvironment:POSTGRES_USER: gitlabPOSTGRES_PASSWORD: gitlabPOSTGRES_DB: gitlabhq_productionnetworks:- gitlabnetworks:gitlab:name: gitlab-network

参数解析:

  • hostname: 访问的域名
  • env: 这里面就是临时提权生效的
    • 这个就是可以给gitlab传入部分参数,让其构建过程读取你设置的值(gitlab.rb)并且生效
    • 官方说这个并不会写入gitlab.rb(就是gitlab的配置文件),只是临时生效(容器生存期间)

对于Gitlab配置,你可以配置容器内的,也可以配置映射的区域
前者可以用gitlab-ctl reconfigure重新生效,后者需要重启容器

• 容器内: /etc/gitlab
• 映射: $GITLAB_HOME/config

*注意:这里的路径下面一定要加上/etc、/log、/opt,不然创建出来的gitlab文件会有问题

启动容器

1
docker-compose up -d

验证是否启动成功

1
2
3
4
5
docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
gitlab-ce           "/assets/wrapper"        gitlab              running (healthy)   0.0.0.0:9922->22/tcp, 0.0.0.0:9980->80/tcp, 0.0.0.0:8443->443/tcp
gitlab-runner-1     "/usr/bin/dumb-init …"   runner              running
postgres            "docker-entrypoint.s…"   postgres            running             0.0.0.0:25432->5432/tcp

部署,整个初始化的过程,我这边等了2-4分钟左右, 因为机器配置不是很高~~~~

修改配置

进入容器

1
docker exec -it gitlab-ce /bin/bash

修改 gitlab.rb

1
vi /etc/gitlab/gitlab.rb

gitlab.rb的配置实在是多,整个配置文件目前接近1800行;里面涵盖了日志,安全,nginx,数据库等等的所有配置,大多数配置都有默认值,所以很多东西看你的需要来开启,

在最下面加入以下代码

1
2
3
4
5
6
// gitlab地址,端口默认为80端口
external_url 'http://192.168.124.194'
// ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.124.194'
// ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

修改http和ssh配置

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

注意此处的 host为线上服务器IP,或者改为域名,如果没有则不需要修改

1
2
3
4
5
6
## GitLab settingsgitlab:## Web server settings (note: host is the FQDN, do not include http://)host: 192.168.124.194port: 9980https: false

修改成功后重启

1
gitlab-ctl restart

或者重载配置文件使其生效

1
gitlab-ctl reconfigure

退出容器

1
exit

使用 root 账户登录:

获取密码:

1
2
docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password
Password: ********************************************

访问:http://localhost:9980 或者 http://0.0.0.0:9980

到这一步就成功一大半了!

登录:
通过IP访问或配置hosts后通过域名访问,获取root初始密码,24小时后失效,需及时修改密码

修改gitlab的root密码

进入容器

1
docker exec -it gitlab-ce /bin/bash

进入gitlab控制台

1
2
3
4
5
6
7
gitlab-rails console -e production
--------------------------------------------------------------------------------Ruby:         ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5) [aarch64-linux]GitLab:       15.9.2 (d5a415f1e66) FOSSGitLab Shell: 14.17.0PostgreSQL:   13.8
------------------------------------------------------------[ booted in 21.18s ]

查询id为1的账号,1默认是超级管理员

1
2
user = User.where(id:1).first
=> #<User id:1 @root>

修改密码 密码如果只有数字无法保存

1
2
user.password='********'
=> "********"

保存修改 如果返回true则表示保存成功

1
2
user.save!
=> true

退出容器

1
exit

中文设置

中文设置方法: 依次点击工具栏最右侧用户头 -> Settings -> Preferred language , 然后选择 “简体中文” 即可。

查看版本

查看Gitlab版本,可以在https://your.domain.name/help上查看GitLab的版本。
gitlab-version

关闭所有在运行的容器

执行命令

1
docker-compose down

引用

  • How to install GitLab using Docker Compose?
  • Docker折腾记: (3)Docker Compose构建Gitlab,从配置(https,邮箱验证)到基本可用

以上。

原文作者:Saki Shum

原文链接:https://sakishum.com/2023/04/11/%E5%9F%BA%E4%BA%8EDocker%E5%9C%A8M%E8%8A%AF%E7%89%87%E7%9A%84Mac-OS-X%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E9%83%A8%E7%BD%B2%E5%92%8C%E8%AE%BE%E7%BD%AEGitLab/

发表日期:四月 11日 2023, 2:17:09 下午

更新日期:四月 11日 2023, 2:18:30 下午

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/893208.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020-PTA总决赛-L1-7 前世档案(思路)

二叉树性质输入样例: 3 4 yny nyy nyn yyn输出样例: 3 5 6 2一开始居然傻傻的开始动手写二叉树的数据结构,还是题做少了... 写了一半感觉一个破L1的题凭什么这么麻烦,结果发现就是根据层序生成编号罢了 左子树编号是root2,右子树编号是root2+1部分正确Code: #include<bit…

50 Java正则表达式之Pattern和Matcher

前言 之前简单分析了Java正则表达式的基础用法和部分规则:String.matches方法使用 今天来看一下常用来处理正则表达式的两个类:Pattern 包名:java.util.regex.Pattern;Pattern 类用于表示一个正则表达式的编译版本。通过 Pattern.compile() 方法可以将一个正则表达式编译成一…

Cursor项目重构实践

在2025年3月的这个清晨,当我通过Cursor生成的TodoList项目首次运行时,那个将所有逻辑堆积在app.js中的"面条式代码"令人如鲠在喉。这促使我开启了一场与AI协作的重构之旅,以下是完整的心得记录 一、原始架构的痛点分析 初始项目采用典型的单体组件架构,app.js承载…

JUnit 版本影响 Bean 找不到

JUnit 版本影响 Bean 找不到 在为实现类编写测试类时,在测试类中使用构造器注入 Bean 时,提示找不到 Bean,代码如下: @Service public class WeChatServiceImpl implements IWeChatService {@Overridepublic String getNumber(String detailCode) { return detailCode; } }…

RMQ学习笔记

RMQ学习笔记 前言:这个算法无论是从适配性还是长度来说都很有实力...💦 关于 RMQ RMQ 是英文 Range Maximum/Minimum Query 的缩写,表示区间最大(最小)值。 详细信息 求 \(l-r\) 区间内的最大/最小数. 区间构造本质是DP.设 \(f[i][j]\) 为 \(i\sim i+2^{j-1}\) 的区间最大…

生意的本质是什么?几个关键概念的理解

生意的本质一句话理解 生意的本质可以理解为通过满足他人需求来实现价值交换的过程。其核心是围绕价值创造和价值交换来展开。满足需求:提供解决需求的产品或服务。 价值交换:人们参与交易,价值交换过程。可以看成是价值创造与交换的过程。底层逻辑:供需关系 供需关系 生意…

STM32实战——DHT11温湿度获取并展示

本博客详细介绍了DHT11数字温湿度传感器的工作原理、通信协议及其与STM32的接线方式,并提供了完整的驱动代码与示例程序,帮助读者实现温湿度数据采集与显示,适用于嵌入式开发者学习和参考。介绍 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,包括…

Windows平台调试器原理与编写03.单步

调试器原理与编写03.单步-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 单步 TF - 置位(置1 复位就是置0) 单步步入 -- 遇到call便入单步步过 -- 遇到call不入区分一条指令是不是call指令: 通过反汇编引擎,反汇编出来是个 call 说明 就是 call指令 代码实现…

day14 服务管理篇的学习

day14 服务管理的学习 1.Linux的默认提供的服务 1. shhd 的命令 [root@linux-yzk ~]# netstat -tnlp | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1137/sshd tcp 0 0 127.0.0.1:6010 0.0.0…

关于ADAC儿童安全座椅排名

ADAC官网地址 直接翻看排行榜, 注意, 分数越小,排名越靠前。 国内推荐使用 亚马逊中国这样的app或者网站进行购买,海外直邮。 避免在国内买到贴牌货, 国内, 懂得都懂, 5星批发部, 实际使用的和送检的不是同一种, AB货。当然不是所有的国内的商品都是AB货。ADAC不支持主…

六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性

六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性@目录六、MyBatis特殊的SQL6.1 模糊查询6.2 动态设置表名6.3 校验名称唯一性本人其他相关文章链接 六、MyBatis特殊的SQL 6.1 模糊查询方式1:select * from litemall_user where username like %${username}%(推…