docker 通过Dockerfile自定义的镜像部署Springboot项目

一、镜像结构介绍:

  • 镜像:层(Layer)添加安装包、依赖、配置等,每一次操作都形成新的一层;基础镜像(BaseImage)应用依赖的系统函数库、环境、配置、文件等;入口(Entrypoint)镜像运行入口,一般是程序启动脚本和参数;包含应用程序所需要的运行环境、数据库、配置以及应用本身等各种文件,这些文件分层打包而成。

  • Dockerfile 定义:就是一个文本文件,包含一个个指令,通过指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。Dockerfile做什么的? 利用固定的指令来描述镜像的结构和构建过程,这样Docker才可以依次来构建镜像。

  • 常见指令

    FROM :指定基础镜像
    ENV:设置环境变量,可以在后面指令使用
    COPY:拷贝本地文件到镜像的指定目录
    RUN:执行Linux的shell命令,一般安装过程的命令
    EXPOSE:指定容器运行时监听的端口,是给镜像使用者看的
    ENTRYPOINT:镜像应用的启动命令,容器运行时调用

Dockerfile supports the following instructions地址

  • 构建镜像的命令是什么?

    docker build -t 镜像名称:tag Dockerfile目录

部署一个java应用的步骤:

  • 准备一个Linux服务器

  • 安装JRE并配置环境变量

  • 拷贝Jar包

  • 运行jar包
    二、构建镜像简单demo实践

  • Dockerfile 创建文件

    touch Dockerfile

  • 编辑Dockerfile相关内容

    #使用OpenJDK作为基础镜像
    FROM openjdk:17-jdk-alpine

    将jar文件复制到镜像的/app目录下

    注意:这里的your-springboot-app.jar应该替换为你实际的jar文件名

    COPY target/aitestpro-0.0.1-SNAPSHOT.jar /app/aitestpro-0.0.1-SNAPSHOT.jar

    #设置工作目录为/app
    WORKDIR /app
    #设置时区
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo > /etc/timezone

    暴露应用程序端口(Spring Boot默认是8080)

    EXPOSE 8080

    设置容器启动时执行的命令

    这里使用java -jar来运行jar文件

    ENTRYPOINT ["java", "-jar", "aitestpro-0.0.1-SNAPSHOT.jar"]

二、打包Spring Boot 3项目为jar文件

复制代码
./mvnw clean package -DskipTests

或者直接通过idea软件 mvn插件命令打包

三、Docker 构建

复制代码
docker build -t docker-aipro .
  • -t:给镜像起名字,格式是repostory:tag格式,不指定格式是默认为latest。

  • . :是指定Dockerfile的目录,并且关系文件内部的执行命令。若为当前目录就为"."。

  • 若有文件中有相关的jdk镜像,可以提前加载,构建时,速度会快一些。

    docker load -i jdk.jar

  • 加载完查看相关的镜像

  • 进入相关的Dockerfile目录下进行构建日志

  • 查看生成的镜像列表

    运行相关的镜像

    docker run -d --name aipro -p 8080:8080 docker-aipro

  • 查看镜像进程及相关的日志

    docker ps
    docker logs docker-aipro

浏览器访问Springboot项目:

相关推荐
sondx1 小时前
mac安装浏览器闪退处理
运维·docker·容器
爱的叹息2 小时前
Spring MVC与Spring Boot文件上传配置项对比
spring boot·spring·mvc
郭涤生2 小时前
第二章:Docker及Kubernetes基础 重难点详解_《再也不踩坑的kubernetes实战指南》
笔记·docker·容器·kubernetes
知其_所以然3 小时前
docker安装软件汇总(持续更新)
运维·docker·容器
爱的叹息4 小时前
Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结
spring boot·后端·spring
limnade4 小时前
将已有 SVN 服务打包成 Docker 镜像的详细步骤
linux·运维·docker
ALe要立志成为web糕手4 小时前
docker使用
docker·容器·eureka
chengpei1474 小时前
docker配置远程连接,dockerfile-maven-plugin插件打包到远程
spring boot·docker·maven
java奋斗者5 小时前
基于Java的人脸识别在线考试系统(jsp+springboot+mysql8.x)
java·开发语言·spring boot
GreenMountainEcho5 小时前
Kubernetes 入门篇之网络插件 calico 部署与安装
网络·容器·kubernetes