目录

docker-hub上具有很多优秀的镜像,可以满足大家的大多数中间件/服务需求。但是,学会制作镜像也是较为重要的,以备不时之需。

场景

Mac m1芯片的电脑是arm架构的,但是docker-hub xxl官方的镜像并不支持arm架构。因此,需要自己制作一个镜像。

https://hub.docker.com/search?q=xxl-job-admin
官方(第一个)并不支持,当然可直接使用第三方的(第二个)

开始制作

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

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐