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

相关推荐
天上掉下来个程小白10 分钟前
Docker-14.项目部署-DockerCompose
运维·docker·微服务·容器
别惹CC1 小时前
Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
人工智能·spring boot·spring
柯南二号2 小时前
【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
java·spring boot·mybatis
javachen__3 小时前
SpringBoot整合P6Spy实现全链路SQL监控
spring boot·后端·sql
星霜笔记4 小时前
Docker 部署 MariaDB+phpMyAdmin+Nextcloud 完整教程
运维·数据库·docker·容器·mariadb
数据知道6 小时前
容器化部署:用Docker封装机器翻译模型与服务详解
docker·容器·机器翻译
IT毕设实战小研9 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
一只爱撸猫的程序猿10 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋10 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
武昌库里写JAVA13 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习