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运行nginx为什么要使用daemon off

    浅谈docker运行nginx为什么要使用daemon off

    这篇文章主要介绍了浅谈docker运行nginx为什么要使用daemon off,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Ollama在Docker下的安装与配置详细教程

    Ollama在Docker下的安装与配置详细教程

    这篇文章主要介绍了如何通过Docker拉取Ollama镜像并运行,包括可视化界面和命令行两种方式,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • 详解修改docker时区及docker常用命令

    详解修改docker时区及docker常用命令

    这篇文章主要介绍了详解修改docker时区及docker常用命令,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • docker实现资源清理方式

    docker实现资源清理方式

    这篇文章主要介绍了docker实现资源清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • docker容器内安装TensorRT的问题

    docker容器内安装TensorRT的问题

    很多朋友在使用docker容器内安装TensorRT的时候,遇到一大堆棘手的问题,不知道怎么处理好了,今天小编就docker安装TensorRT的问题给大家详细介绍下,感兴趣的朋友一起看看吧
    2021-05-05
  • docker常用命令解读之volume篇

    docker常用命令解读之volume篇

    这篇文章主要介绍了docker常用命令解读之volume篇说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 使用Docker Compose创建LAMP环境的详细步骤

    使用Docker Compose创建LAMP环境的详细步骤

    现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP 这样的复杂环境时,本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,需要的朋友可以参考下
    2024-12-12
  • Docker连接宿主Redis的方法步骤

    Docker连接宿主Redis的方法步骤

    本文主要介绍了Docker连接宿主Redis的方法步骤,可以轻松地使用Docker容器与宿主机上的Redis进行交互,实现高效的数据存储和共享,,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Dockerfile指令详解

    Dockerfile指令详解

    Dockerfile有十几条命令可用于构建镜像,下文将简略介绍这些命令。希望小伙伴们能够喜欢
    2016-10-10
  • Docker部署Tomcat并开放8082端口的实现步骤

    Docker部署Tomcat并开放8082端口的实现步骤

    本文主要介绍了Docker部署Tomcat并开放8082端口的实现步骤,首先安装docker环境,创建tomcat镜像,随后开放端口,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论