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项目:

相关推荐
muyun280042 分钟前
Docker 下部署 Elasticsearch 8 并集成 Kibana 和 IK 分词器
elasticsearch·docker·容器
麦兜*1 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*1 小时前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
汤姆yu1 小时前
基于springboot的毕业旅游一站式定制系统
spring boot·后端·旅游
Nazi62 小时前
k8s的dashboard
云原生·容器·kubernetes
计算机毕业设计木哥2 小时前
计算机毕设选题推荐:基于Java+SpringBoot物品租赁管理系统【源码+文档+调试】
java·vue.js·spring boot·mysql·spark·毕业设计·课程设计
傻傻虎虎6 小时前
【Docker】常用帮忙、镜像、容器、其他命令合集(2)
运维·docker·容器
是小崔啊6 小时前
叩丁狼K8s - 概念篇
云原生·容器·kubernetes
hdsoft_huge11 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
2401_8979300614 小时前
使用Docker轻松部署Neo4j图数据库
数据库·docker·neo4j