当前位置: 首页 > news >正文

docker容器环境安装记录(MAC M1)(完善中)

0、背景

在MAC M1中搭建商城项目环境时,采用docker统一管理开发工具,期间碰到了许多环境安装问题,做个总结。

1、安装redis

  • 在宿主机新建redis.conf文件
  • 运行创建容器命令,进行容器创建、端口映射、文件挂载、以指定配置文件启动:
    docker run -d \ --name my-redis \ -v /Users/chenzhouyuan/Public/work/environment/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf \ -v /Users/chenzhouyuan/Public/work/environment/docker/redis/data:/data \ -p 6379:6379 \ redis redis-server /usr/local/etc/redis/redis.conf
    未解决的问题:运行命令后,redis-server未正常启动,需要在docker容器中手动输入命令“redis redis-server /usr/local/etc/redis/redis.conf”,检查后发现网络、配置文件、文件权限均无问题,暂不知原因。(可能是mac M1平台的bug?)

2、安装xxl-job

错误描述
docker容器中xxl-job无法连接宿主机的mysql。原因是访问宿主机mysql,需要使用局域网,且mysql需要赋予此ip访问权限‘
错误提示在这里插入图片描述
解决方式
需要在mysql中执行sql命令,添加指定ip地址账号的访问权限,输入:

CREATE USER 'root'@'192.168.6.182' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.6.182' WITH GRANT OPTION;
FLUSH PRIVILEGES;

连接通过,xxl-job的web页面访问正常
在这里插入图片描述
其他
M1 mac对xxl-job容器同样有兼容性问题,需要参考安装rocketmq容器时的源代码编译方式。

3、安装rocketmq

问题描述
需要安装rocketmq-namesrv、rocketmq-broker、rocketmq-console。运行docker容器时,rocket-console的web页面无法显示,docker日志为空。原因是amd64镜像的兼容性问题,需要更换成arm64镜像,因此需要下载源代码进行本地编译和镜像打包。

解决方式
1、从apche的账号中git clone下来源代码:包含rocketmq和dashboard(新版本console已经重命名为dashboard)
git clone https://github.com/apache/rocketmq-docker.git
git clone https://github.com/apache/rocketmq-dashboard.git
2、先用rocketmq-docker搭建namesrv和broker,因为官方源代码自带生成docker镜像的相关脚本,直接使用即可。

进入刚才下载的源码根目录,找到image-build:
cd image-build
生成镜像:
sh build-image.sh 4.8.0 centos
生成容器并运行:
docker run ...

3、接下来编译dashboard,需要手动编译项目。

  • 修改项目中的Dockerfile,将依赖的jdk改成支持arm64芯片的openjdk8
    在这里插入图片描述
  • 构建后发现部分依赖包缺失,于是从中央仓库(例如:https://mvnrepository.com/artifact/io.grpc/grpc-api/1.50.0)下载无法识别的依赖包:grpc-api、grpc-core,将jar包加载到项目中;
  • 运行mvn package打包项目为jar包(跳过测试),并生成镜像:
    mvn clean package -Dmaven.test.skip=true docker:build
  • 新建broker.conf文件,按需修改docker-compose.yml文件:
    在这里插入图片描述
    在这里插入图片描述

4、运行docker-compose生成容器
docker-compose -f docker-compose.yml up -d

参考文献
文献1
文献2

4、安装mysql

运行命令:
docker run -p 3307:3306 --restart always --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
未解决的问题:mac宿主机的navicat无法连接容器中的mysql,即使已经做了端口映射,暂时使用宿主机本地的mysql8.0搭建。

5、安装nacos

未解决的问题:同样有arm64和amd64兼容性的问题,暂未更换镜像
在这里插入图片描述

6、其他:安装skywalking、seata-server、sentinel(可选)

暂无异常

http://www.lryc.cn/news/332946.html

相关文章:

  • Linux 常用命令(持续更新中...)
  • xss.pwnfunction-Jefff
  • java——文件上传
  • RCE(远程命令执行)漏洞详解
  • K8S - Deployment 的版本回滚
  • 53 v-bind 和 v-model 的实现和区别
  • VMware-16.0配置虚拟机网络模式
  • element-ui badge 组件源码分享
  • MySQL中日期有关函数
  • jdbc工具类
  • Svelte Web 框架介绍
  • IP地址获取不到的原因是什么?
  • Android APP加固利器:深入了解混淆算法与混淆配置
  • 蓝桥杯真题Day47 倒计时6天:6道真题+回溯递归问题
  • 通过UDP实现参数配置
  • 解析Apache Kafka:在大数据体系中的基本概念和核心组件
  • 独角数卡对接码支付收款教程
  • vuepress-theme-hope 添加谷歌统计代码
  • LabVIEW太赫兹波扫描成像系统
  • 什么是stable diffusion?
  • KeyguardClockSwitch的父类
  • Gradle系列(二):Groovy基础
  • PW1503限流芯片:可达3A限流,保障USB电源管理安全高效
  • 深挖苹果Find My技术,伦茨科技ST17H6x芯片赋予产品功能
  • Web3 革命:揭示区块链技术的全新应用
  • [实战经验]Mybatis的mapper.xml参数#{para}与#{para, jdbcType=BIGINT}有什么区别?
  • 高并发下的linux优化
  • 不同设备使用同一个Git账号
  • 蓝桥杯算法题:区间移位
  • 提取word文档里面的图片