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

相关推荐
007php0071 小时前
go语言zero框架通过chromedp实现网页在线截图的设计与功能实现
java·开发语言·后端·python·docker·云原生·golang
期待未来的男孩3 小时前
Docker 实现MySQL 主从复制
mysql·docker·容器
工业互联网专业4 小时前
基于springboot+vue的城市公交查询系统
java·vue.js·spring boot·毕业设计·源码·课程设计
ss2736 小时前
基于Springboot + vue实现的贸易行业crm系统
vue.js·spring boot·后端
UPToZ6 小时前
【Docker】搭建一个功能强大的自托管虚拟浏览器 - n.eko
docker·容器
我要学编程(ಥ_ಥ)7 小时前
初始JavaEE篇 —— 快速上手 SpringBoot
java·spring boot·spring·java-ee
customer087 小时前
【开源免费】基于SpringBoot+Vue.JS夕阳红公寓管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
零臣8 小时前
SpringBoot整合RabbitMQ
spring boot·rabbitmq·java-rabbitmq
lozhyf8 小时前
基于springboot+sureness的面向REST API资源无状态认证权限管理系统的后端
java·spring boot·后端
小马爱打代码9 小时前
Spring Boot + Netty + WebSocket 实现消息推送
spring boot·后端·websocket