Docker部署java项目,关于Dockerfile文件构建镜像方式
作者:一头生产的驴
文章指导如何使用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环境,直接把该文件移动到映射文件目录,宿主机目录就可以直接看见进行下载了
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。