树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务
前提:本文基于Ubuntu,Java8,SpringBoot 2.6.13讲解
准备工作
准备SpringBoot/SpringCloud项目jar包
用 maven
打包springBoot/springCloud项目,先在本地跑一跑,是否可以正常运行,特别注意哈!如果项目访问数据库,redis等运行在docker容器的服务,那么你的IP不能配置成树莓派IP,必须是docker network 内分配的IP,用命令docker network inspcet NETWORK_NAME
查看。所以你的项目需要准备3个yaml文件:application.yaml,application-dev.yaml,application-test.yaml;本地配置放dev里,docker的配置放test里,项目在本地能够跑通再把application.yaml里的spring.profiles.active
配置改成test。本地跑不通请检查自己的项目。
bash
java -jar demo.jar # 把demo.jar包换成你的jar包名
下载jdk-8u391-linux-aarch64.tar.gz
到oracle(Java Downloads | Oracle 中国)下载
Tips:如果你所处的国内互联网无法访问到以上网址,如不嫌弃请使用我分享的百度云盘下载jdk.tar.gz(链接:https://pan.baidu.com/s/1n4WjOslFL-JBG2tq-7Fd1g?pwd=a3i2
提取码:a3i2)
编写dockerfile
-
将上述的
demo.jar(换成你自己的jar包)
,jdk-8u391-linux-aarch64.tar.gz
上传到树莓派 -
通过SSH登录树莓派后,切换到
root
用户(命令:su root
) -
在
root
目录下新建一个文件夹mkdir /root/spring_dockerfile
,将已上传的文件mv
到📂spring_dockerfile
中 -
创建dockerfile 📄并给文件授权 :
mkdir dockerfile && chmod +x dockerfile
-
打开dockerfile📄文件(
vim dockerfile
),将下述代码写入(需要修改的地方,我已经标注出)dockerfileFROM ubuntu WORKDIR /usr/local USER root RUN apt-get update RUN apt-get install -y net-tools RUN apt-get install -y iputils-ping # 创建两个文件夹,用于放JRK和springboot的应用 RUN mkdir /usr/local/java /usr/local/spring_application # JAVA 环境变量配置 ENV JAVA_HOME /usr/local/java/jdk1.8.0_391 ENV JRE_HOME ${JAVA_HOME}/jre ENV CLASSPATH .:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib:${JRE_HOME}/lib ENV PATH ${JAVA_HOME}/bin:${PATH} # 添加JDK ADD ./jdk-8u391-linux-aarch64.tar.gz /usr/local/java # 将jar包拷入到对应目录下(根据自己的配置做修改) COPY ./demo.jar /usr/local/spring_application # 对外暴露端口(根据自己的配置做修改) EXPOSE 8008 # 运行(根据自己的配置做修改) CMD ["-jar","/usr/local/spring_application/demo.jar"] ENTRYPOINT ["java"]
构建 并 生成容器
-
拉取Ubuntu
bashdocker pull ubuntu docker images | grep ubuntu # 检查Ubuntu是否已经被拉入本地(这条命令可忽略不执行)
-
构建镜像
进入到
spring_dockerfile
目录下,⚠️ 构建不会立刻完成,请耐心等待bash# 注意我的注释,改成你的配置。此外:命令结尾有个点,不然构建失败,我给镜像取名spring-demo:1.0,你也可以自定义名称,不过一定要遵循<name>:<tag>的命名规则 docker build -f dockerfile -t spring-demo:1.0 . docker images | grep spring-demo # 检查spring-demo是否已经被构建完毕且在本地(这条命令可忽略不执行)
-
生成容器
bashdocker run -itd --name=spring-demo -p 8008:8008 spring-demo:1.0 docker ps | grep spring-demo# 检查容器是否生成且处于运行状态(这条命令可忽略不执行)
-
到此,springboot/springcloud应用就已经跑在docker上了,用浏览器访问
http://树莓派IP:端口
就可以成功访问到spring应用了,如果一次请求无法访问,就多试几次,因为spring应用运行起来需要点时间