Mac m1芯片 docker 安装部署xxl-job
目录
docker-hub上具有很多优秀的镜像,可以满足大家的大多数中间件/服务需求。但是,学会制作镜像也是较为重要的,以备不时之需。
场景
Mac m1芯片的电脑是arm架构的,但是docker-hub xxl官方的镜像并不支持arm架构。因此,需要自己制作一个镜像。
官方(第一个)并不支持,当然可直接使用第三方的(第二个)
开始制作
1.下载github下载项目 打包xxl-job-admin
## 1下载项目
git clone https://gitclone.com/github.com/xuxueli/xxl-job.git
## 2进入项目
cd xxl-job
## 3打包项目
mvn clean package -Dmaven.test.skip=true
## 4复制xxl-job-admin的可运行jar包到xxl-job-admin目录下
cp xxl-job-admin/target/xxl-job-admin-*-SNAPSHOT.jar xxl-job-admin/
## 5先进入xxl-job-admin/ 里面有DockerFile文件
cd xxl-job-admin/
## 6制作镜像到我们的mac的docker上
## 7指令 docker build -t 自定义的镜像名:版本号 . ##不要忘了有个点.
docker build -t xxl-job-admin:2.0 .
## 8基于此镜像我们run一个容器。
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.0.102:3306/xxl_job_2.3.1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=12345678" -p 8680:8080 -v xxljob-log:/data/applogs --name my-xxl-job-admin -d xxl-job-admin:2.0
说明:
① -e PARMS= 参数 后面就是咱们的xxl-job-admin数据库的URL、用户名、密码
② -v 本地映射到docker容器的日志,甚至可以不写
访问localhost:8680/xxl-job-admin
2.按照上面的步骤,仍然有问题请看这里。
问题1:docker run时警告,大概率此时xxl-job无法使用了。
WARNING: The requested image’s platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
问题1解决办法:
## 1删除容器
docker rm my-xxl-job-admin
## 2删除镜像
docker rmi xxl-job-admin:2.0
## 3修改DockerFile文件
vim DockerFile
## DockerFile 文件内容 开始
FROM mdsol/java8-jdk:latest
MAINTAINER xuxueli
ENV PARAMS=""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD target/xxl-job-admin-*.jar /app.jar
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]
## DockerFile 文件内容 结束
## 4重新构建这个镜像
docker build -t xxl-job-admin:2.0 .
## 5基于此镜像我们run一个容器。
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.0.102:3306/xxl_job_2.3.1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=12345678" -p 8680:8080 -v xxljob-log:/data/applogs --name my-xxl-job-admin -d xxl-job-admin:2.0
本质原因是官网基于oenjdk:8-jre-slim 这个镜像不支持ARM
验证一下
localhost:8680/xxl-job-admin