在MAC M1中搭建商城项目环境时,采用docker统一管理开发工具,期间碰到了许多环境安装问题,做个总结。
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
错误描述:
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容器时的源代码编译方式。
问题描述:
需要安装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,需要手动编译项目。
mvn clean package -Dmaven.test.skip=true docker:build
4、运行docker-compose生成容器
docker-compose -f docker-compose.yml up -d
参考文献:
文献1
文献2
运行命令:
docker run -p 3307:3306 --restart always --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
未解决的问题:mac宿主机的navicat无法连接容器中的mysql,即使已经做了端口映射,暂时使用宿主机本地的mysql8.0搭建。
未解决的问题:同样有arm64和amd64兼容性的问题,暂未更换镜像
暂无异常