一. 下载安装并启用dockerx
- 开启实验性特性(已下载windows端desktop版或linux端desktop版无需执行)
vim ~/.docker/config.json
"experimental": "enabled"
vim /etc/docker/daemon.json
"experimental": true
systemctl daemon-reload
systemctl restart docker
docker version
- 下载机器对应的二进制安装包https://github.com/docker/buildx/releases/tag/v0.8.2,执行下列代码(已下载windows端desktop版或linux端desktop版无需执行)
mkdir -p ~/.docker/cli-plugins
mv buildx-v0.8.2.linux-xxx ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx
docker buildx version
- 安装模拟器
docker buildx ls
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx ls
二. 更新后端
- 首先从orcale官网下载jdk8的包https://www.oracle.com/java/technologies/downloads/下载jdk-8u341-linux-aarch64.tar
- 尝试解压,查看解压后的文件夹名字
- maven package包,取消test部分
- 在项目根目录下编写Dockerfile文件如下:(请修改下面的your_name,your_ziped_file_name,your_unziped_directory_name,your_package_location)
#!/bin/bash
FROM arm64v8/ubuntu:latest
MAINTAINER ethereal(your_name)
WORKDIR ./usr/local
RUN mkdir jdk
RUN chmod 777 /usr/local/jdk
ADD jdk-8u341-linux-aarch64.tar(your_ziped_file_name) /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_341(your_unziped_directory_name)
ENV CLASSPATH=$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
COPY ./target/backend-0.0.1-SNAPSHOT.jar(your_package_location) /app/spring-boot-k8s-app.jar
ENTRYPOINT ["java", "-jar" , "/app/spring-boot-k8s-app.jar"]
- 终端中执行(确保docker daemon开启)(修改下面的image_name)
docker buildx build --platform arm64 -f Dockerfile -t jdk1.8(image_name) .
- 查看image得到imageID
docker images
- 打tag
docker tag <imageID> registry.cn-shanghai.aliyuncs.com/ethereal-o/docker:v1(your_remote_hub_name:versionID)
- 推送到远程仓库(需要先登陆)
docker push registry.cn-shanghai.aliyuncs.com/ethereal-o/docker:v1(your_remote_hub_name:versionID)
- 在服务器上以root身份执行
crictl img
crictl rmi javabackend.io/springboot:v1
crictl pull --creds username:[password] registry.cn-shanghai.aliyuncs.com/ethereal-o/docker:v1(your_remote_hub_name:versionID)
ctr -n k8s.io i tag registry.cn-shanghai.aliyuncs.com/ethereal-o/docker:v1(你的镜像仓库名字:版本号) javabackend.io/springboot:v1(这个别改)
- 修改springboot.yaml文件中image内容,与上述一致,然后应用
cd ~/k8s/yaml/springboot
vim springboot.yaml
kubectl apply -f springboot.yaml
- 删除所有springboot pod(其会自动部署)
kubectl get pods
kubectl delete pod <podname>
- 验证
kubectl get pods
kubetcl describe pod <podname>
kubectl logs <podname>