Docker部署java项目,关于Dockerfile文件构建镜像方式

 更新时间:2025年07月09日 15:43:02   作者:一头生产的驴  
文章指导如何使用Docker部署Java应用:先检查Docker版本,拉取openjdk:8基础镜像并创建Dockerfile(注意名称与jar包路径一致),构建镜像后运行容器(指定端口、日志目录及JVM参数),最后进入容器获取Java进程日志并映射到宿主机

一、准备Docker环境

1、安装依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加软件源头(阿里源)- 加速

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、更新yum

sudo yum makecache fast

4、安装docker

sudo yum install docker-ce

5、启动服务  重启restart 停止stop 

systemctl start docker

6、查看版本

docker version

启动Docker查看版本

二、准备build的java镜像

1、拉取基础镜像 openjdk:8

jdk8

docker pull openjdk:8

2、创建Dockerfile文件

注意文件名称要一致Dockerfile,不然构建镜像会出问题

以下文件可以在Run容器时候包参数传进去,比如JVM相关参数

# 使用 OpenJDK 8 作为基础镜像
FROM openjdk:8
# 设置工作目录
WORKDIR /app
# 将宿主机上的 hs-basic.jar 复制到容器内的 /app 目录
COPY hs-basic.jar /app/hs-basic.jar
# 暴露应用程序端口
EXPOSE 80
# 在容器启动时运行应用程序
ENV JAVA_OPTS=""
# 使用 shell 形式的 CMD 命令来执行 Java 应用程序
CMD java $JAVA_OPTS -jar hs-basic.jar

3、构建java镜像

注意:对应的jar包路径要与上面文件路径一直,最好直接放在和Dockerfile一个目录

docker build -t hs-basic:1.0.0 .

构建完成可以查看对应的镜像

docker images

三、启动容器

1、运行容器

指定端口、映射日志目录(注意代码日志目录)

  • 指定jvm参数
docker run -e "JAVA_OPTS=-Xms1024m -Xmx1024m -XX:+UseG1GC" \
           -p 80:80 \
           -v /mnt/docker/logs:/mnt/hs/log \
           -d \
           --name hs-server1.0.0 \
           hs-basic:1.0.0

2、查看容器

启动完成可以通过命令查看容器信息

# 查看启动成功的容器
docker ps

#查看所有容器,包含启动失败的
docker ps -a

四、容器内部dump jvm日志

dump jvm日志

1、进入容器内部

docker exec -it hs-server /bin/bash

查看java进程,然后dump日志

ps -ef | grep java

jmap -dump:live,format=b,file=m.hprof PID

docker环境,直接把该文件移动到映射文件目录,宿主机目录就可以直接看见进行下载了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker 搭建 ElasticSearch过程解析

    docker 搭建 ElasticSearch过程解析

    这篇文章主要介绍了docker搭建ElasticSearch的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,,需要的朋友可以参考下
    2023-08-08
  • 使用Docker-compose部署mysql的简单步骤

    使用Docker-compose部署mysql的简单步骤

    Docker-compose是Docker官方推出的一个工具,用于定义和运行多个 Docker 容器的应用程序,下面这篇文章主要给大家介绍了关于使用Docker-compose部署mysql的简单步骤,需要的朋友可以参考下
    2023-04-04
  • docker overlay2 文件夹比较大处理步骤

    docker overlay2 文件夹比较大处理步骤

    本文介绍了Docker默认存储驱动overlay2文件夹变得大时的清理方法,包括清理未使用的Docker对象、删除未使用的容器和镜像、清理日志文件和数据卷等步骤,通过这些步骤,可以有效释放磁盘空间并避免存储空间不足的问题,感兴趣的朋友跟随小编一起看看吧
    2025-03-03
  • 深入理解Docker Load和Docker Import的区别详解

    深入理解Docker Load和Docker Import的区别详解

    Docker是一个流行的容器化平台,提供了丰富的命令和功能,其中docker load和docker import是两个常用的命令,用于加载Docker镜像,这篇文章主要给大家介绍了关于Docker Load和Docker Import区别的相关资料,需要的朋友可以参考下
    2024-03-03
  • Docker镜像构建-Aliyun详解

    Docker镜像构建-Aliyun详解

    这篇文章主要介绍了Docker镜像构建-Aliyun的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • docker desktop安装redis的实现步骤

    docker desktop安装redis的实现步骤

    本文主要介绍了docker desktop安装redis的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • Docker容器进行健康检查的三种方式

    Docker容器进行健康检查的三种方式

    这篇文章主要介绍了如何对Docker容器进行健康检查,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Docker+Nginx+KeepaLived实现Nginx一主一从高可用方式

    Docker+Nginx+KeepaLived实现Nginx一主一从高可用方式

    在CentOS7主从服务器上部署Nginx容器并配置Keepalived实现高可用,通过虚拟IP自动切换,主从均需安装Keepalived,配置健康检查脚本监控Nginx状态,故障时自动重启或切换虚拟IP,需关闭防火墙和SELinux,并确保脚本有执行权限
    2025-07-07
  • 在Mac OS X安装Docker教程

    在Mac OS X安装Docker教程

    本篇文章主要介绍了在OS X安装Docker教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • docker搭建xxl-job的实现步骤

    docker搭建xxl-job的实现步骤

    XXL-JOB是一个轻量级分布式任务调度平台,通过xxljob,我们可以方便地实现任务调度和任务执行监控,本文介绍了docker搭建xxl-job的实现步骤,感兴趣的可以了解一下
    2023-12-12

最新评论