Solo 博客虽然 D 大没有提供 Arm64 版本的镜像文件,但是熟悉 Docker 的人应该都会利用 docker build 机制手工构建 Armv8 架构的 Docker 镜像。
#1.查看 gitee 上的源码 Dockerfile 文件#
FROM maven:3.8.4-openjdk-11 as MVN_BUILD WORKDIR /opt/solo/ ADD . /tmp RUN cd /tmp && mvn package -DskipTests -Pci -q && mv target/solo/* /opt/solo/ \ && cp -f /tmp/src/main/resources/docker/* /opt/solo/ FROM openjdk:18-alpine LABEL maintainer="Liang Ding<845765@qq.com>" WORKDIR /opt/solo/ COPY --from=MVN_BUILD /opt/solo/ /opt/solo/ RUN apk add --no-cache ca-certificates tzdata ENV TZ=Asia/Shanghai ARG git_commit=0 ENV git_commit=$git_commit EXPOSE 8080 ENTRYPOINT [ "java", "-cp", "lib/*:.", "org.b3log.solo.Server" ]
从上面可知 From 关键字拉取了,两个基础镜像包。好在 Docker 生态越来越好,基础镜像包都有对应的 arm64 版本的,直接替换就好。
#替换后的 Dockerfile 的文件内容如下所示#
其实也就是 将语句 【FROM openjdk:18-alpine】 改成了【FROM jcxldn/openjdk-alpine:16-jdk】 即可
FROM maven:3.8.4-openjdk-11 as MVN_BUILD WORKDIR /opt/solo/ ADD . /tmp RUN cd /tmp && mvn package -DskipTests -Pci -q && mv target/solo/* /opt/solo/ \ && cp -f /tmp/src/main/resources/docker/* /opt/solo/ FROM jcxldn/openjdk-alpine:16-jdk LABEL maintainer="Liang Ding<845765@qq.com>" WORKDIR /opt/solo/ COPY --from=MVN_BUILD /opt/solo/ /opt/solo/ RUN sed -i 's!http://dl-cdn.alpinelinux.org/!https://mirrors.ustc.edu.cn/!g' /etc/apk/repositories RUN apk add --no-cache ca-certificates tzdata ENV TZ=Asia/Shanghai ARG git_commit=0 ENV git_commit=$git_commit EXPOSE 8080 ENTRYPOINT [ "java", "-cp", "lib/*:.", "org.b3log.solo.Server" ]
#3.通过 Git 命令的 Clone 指令 下载源码文件到本地的 arm64 服务器家目录 执行本地编译即可#
git clone https://gitee.com/dl88250/solo.git
然后进入含有 Dockerfile 的文件夹内,按照步骤 1,2 修改 Dockerfile 中的基础镜像包文件名
指令 [RUN sed -i 's!http://dl-cdn.alpinelinux.org/!https://mirrors.ustc.edu.cn/!g' /etc/apk/repositories]
作用用来进行软件包国内加速使用的镜像站
最后执行 docker build -t 88250/solo:1.0 . 命令进行本地化编译即可
#4.最后 如果懒的编译也可以下载我提供的编译好的 arm64 solo 包镜像 导入即可#
--envRUNTIME_DB="MYSQL" --envJDBC_USERNAME="root" --envJDBC_PASSWORD="123456" --envJDBC_DRIVER="com.mysql.cj.jdbc.Driver" --envJDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" 88250/solo:1.0--listen_port=8080 --server_scheme=http --server_host=localhost --server_port=localhost
具体的安装流程参考 D 大 gitee 项目 88250/solo
最后希望 D 大后期可以直接在 DockerHub 中直接放出 ARM64 的兼容镜像,这样也能方便大家在 Arm 架构上使用上 D 大的杰作!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于