Docker打包SpringBoot应用镜像及jdk基础镜像
使用Docker打包自己的第一个SpringBoot应用镜像
首先有一个自己的SpringBoot应用Jar包
1. 编写Dockerfile
FROM openjdk:8u312-jdk-oracle LABEL maintainer=zhangyao COPY target/*.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"]复制代码
解释下命令
FROM 指定基础镜像,此处使用openjdk8的镜像
LABLE 指定镜像的作者
COPY 以Dockerfile所在目录为开始,将指定路径下的jar包拷贝到镜像环境下的对应目录下,如上将target下的所有jar包拷贝到镜像根目录下并改名为app.jar
ENTRYPOINT 容器启动后的命令
2.打包编译镜像
将编写好的target包和Dockerfile上传到linux服务器
# 打包镜像命令 注意最后一个. 指定Dockerfile中COPY的相对路径 此处省略了-f [Dockerfile路径] 默认会使用当前路径下的Dockerfile文件 docker build -t [镜像名]:[标签] .复制代码
3.运行docker容器
docker run --name myapp -d -p 8080:8080 [镜像名]复制代码
打包jdk镜像
操作步骤:
下载jdk-linux压缩包 www.oracle.com/java/techno…
编写Dockerfile
编译镜像
打包镜像导出
\
\
编写Dockerfile
vim Dockerfile #1.指定基础镜像,并且必须是第一条指令 FROM centos:7 #2.指明该镜像的作者和其电子邮件 MAINTAINER zhangyao "zy963613606@aliyun.com" #3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录 WORKDIR /javaxh_docker/jdk #4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径 ADD jdk-8u281-linux-x64.tar.gz /javaxh_docker/jdk/ #5.配置环境变量 ENV JAVA_HOME=/javaxh_docker/jdk/jdk1.8.0_281 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH=$JAVA_HOME/bin:$PATH #容器启动时需要执行的命令 #CMD ["java","-version"]复制代码
上述文件需要根据jdk压缩包的路径,版本修改
编译镜像
# jdk1.8为镜像名 后面为TAG 最后为Dockerfile的路径,.表示当前目录 docker build -t jdk1.8:<TAG> .复制代码
打包导出
#保存镜像 jdk.tar 文件名称 后面为镜像:TAG docker save -o jdk.tar jdk1.8:v1.1 #导入镜像 docker load -i jdk.tar复制代码
\
遇到的问题
记录下在上述过程中遇到的问题:
容器启动后进入容器运行java -version命令,提示java命令不存在
# 使用echo $PATH输出环境变量,发现是Dockerfile中的ENV JAVA_HOME=/javaxh_docker/jdk/jdk1.8.0_281 路径与实际路径不一致导致的,修改Dockerfile后重新编译打包即可 echo #PATH
作者:z_y_s
链接:https://juejin.cn/post/7062535430809321508