砍材农夫砍材农夫
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • nginx

    • nginx日常

      • 概念
      • 常用命令
      • nginx安装和部署
    • nginx实战

      • 基本配置拆解
      • 配置https证书
      • nginx负载配置
    • webUI

      • nginxWebUI
  • linuxs

    • 基础

      • 常用命令
      • grep
      • 防火墙
      • 基础常用命令
      • linux基础常用命令2
      • 配置应用自动启动
      • 自动同步北京时间
      • 防火墙操作
      • ifconfig无ip
      • Rocky-8无网络和局域网无法访问
    • 高级

      • 常用命令
      • vm虚拟机磁盘扩容
      • jdk安装
      • centos7 不显示IP
      • linux分析问题常用命令
      • linux任务管理
      • 权限控制
      • 记录用户操作日志
      • 日常分析问题命令介绍
      • 网络配置
      • cached过高问题
      • 找回删除文件
      • cpu负载突然升高
      • 磁盘爆满查找大文件
      • CentOS7系统配置国内yum源和epel源
    • vi

    • curl

  • docker

    • 基础
      • 安装和配置

        • window相关安装和配置
        • window基础简单操作
        • linux安装
        • 相关概念
      • 相关命令

        • 相关命令
        • docker镜像相关命令
      • 安装实例

        • 安装elasticsearch
        • docker其他常见快速部署
        • docker搭建mysql
        • docker备份mysql
        • docker更改mysql配置
        • docker搭建nexus
      • 其他

        • 镜像的迁移和备份
        • 网络
        • 常见错误集
        • docker部署hdfs
        • docker容器时间和本地时间不一致
        • docker批量操作
    • 日常运维

      • docker实例内文件下载
      • docker仓库搭建(Nexus)
      • docker仓库搭建(Hub)
    • docker-file

      • dockerfile入门
      • dockerfile(java应用)
    • docker-compose

      • docker-compose意义
  • k8s

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • haproxy

    • haproxy部署实战

      • haproxy部署介绍
      • haproxy部署实战
      • haproxy案例分析
  • jenkins

    • 环境部署搭建
    • 自由风格构建应用发布
    • 获取远程git项目|分支选择
    • pipeline构建应用
    • pipeline结合docker构建应用
    • 权限管理
    • web项目构建
    • 集成maven获取远程项目
    • 视图细粒度权限管理
    • 其他日常操作案例
    • 版本升级或重装备份问题
    • 多模块关联关闭
  • prometheus

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • gitlab

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • maven

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • elk

    • openobserve

      • docker部署openobserve
      • 采集器fluent
      • openobserve日常管理使用
  • 运维|devops|docker|dockerfile入门
    • dockerfile用处
    • 基础四步骤
    • 编写Dockerfile
    • 实操演示

运维|devops|docker|dockerfile入门

dockerfile用处

dockerfile是一个文本的配置文件,它可以快速创建自定义的镜像

基础四步骤

  • 四步
文本格式包含基础镜像FROM
维护者MAINTAINER
操作指令ADD
容器启动后指令
  • eg
#1.基础镜像:FROM指令:基础镜像名:tag,例如java:8
FROM java:8
#2.维护者:格式:MAINTAINER <name>
MAINTAINER jackly
#3.镜像的操作指令
# ADD拷贝一个文件到容器中,格式:ADD <src> <dest>
ADD eureka-server-0.0.1-SNAPSHOT.jar  /app/service/eureka/data/app.jar
#告诉docker容器暴露端口,在容器启动的时候,需要通过-p 做端口映射
EXPOSE 8761
#5.配置容器启动后,执行什么命令
ENTRYPOINT ["java","-jar","/app/service/eureka/data/app.jar"]

编写Dockerfile

指令作用示例
FROM指定基础镜像,一切构建从此开始,比如选择一个带JDK的镜像FROM openjdk:17-jre-slim
WORKDIR设置工作目录,后续的COPY、RUN、CMD等命令都会在这个目录下执行WORKDIR /app
COPY复制文件,将本地文件(如JAR包)复制到镜像中COPY target/my-app.jar app.jar
RUN执行命令,在构建镜像时运行,常用于安装软件包RUN apt-get update && apt-get install -y curl
ENV设置环境变量,设置容器运行时的环境变量ENV JAVA_OPTS="-Xms512m -Xmx1024m"
EXPOSE声明端口,告诉Docker容器内应用打算监听的端口,仅作文档说明EXPOSE 8080
CMD容器启动命令,定义容器启动时执行的命令,可以被docker run时的命令覆盖CMD ["java", "-jar", "app.jar"]
ENTRYPOINT容器入口点,也是定义启动命令,但更“硬”,通常与CMD配合使用ENTRYPOINT ["java", "-jar"]
CMD ["app.jar"]

实操演示

# 使用轻量级 JRE 镜像(基于 Alpine,体积更小)
FROM eclipse-temurin:21-jre-alpine

LABEL maintainer="your-email@example.com"

WORKDIR /app

# 复制 JAR 包(使用通配符,适应版本变化)
COPY target/*.jar app.jar

# 暴露应用端口
EXPOSE 6086

# 设置 JVM 参数(可通过环境变量覆盖)
ENV JAVA_OPTS="-Xms256m -Xmx512m"

# 健康检查(需应用暴露 /actuator/health 端点)
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:6086/actuator/health || exit 1

# 启动命令(支持传入 JAVA_OPTS)
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar.jar"]
最近更新: 2026/7/31 20:12
Contributors: kcnf
Next
dockerfile(java应用)