Docker 创建一个spring(jar)镜像服务启动容器

mkdir java

cd java

把所需要的包传到刚建立的java目录下

ls 

Dockerfile   //创建的dockerfile文件

hh.jar  //这个jar包

jdk-8u251-linux-x64.tar.gz    //这个是jdk包1.8.0_251

vi Dockerfile
FROM centos:7

RUN mkdir /usr/local/java \
    && mkdir /usr/local/logs
#ADD zxss-impl.jar /usr/local/app/
ADD jdk-8u251-linux-x64.tar.gz /usr/local/java/

RUN ln -s /usr/local/java/jdk1.8.0_251 /usr/local/jdk

ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

ADD hh.jar /usr/local/app/hh123.jar

EXPOSE 8088

ENTRYPOINT ["java", "-Xms256m", "-Xmx4096m", "-Duser.timezone=GMT+08", "-jar", "/usr/local/app/hh123.jar", "--spring.profiles.active=test"]

dockerfile我在创建nginx镜像的时候基本解释各意思作用,ENTRYPOINTCMD的作用相似,但还是有区别的

我本地启动spring命令,大意是后台启动输出日志丢空,java内存设置大小时间,在那个目录的jar包,启动环境为test

nohup java -Xms256m -Xmx4096m -Duser.timezone=GMT+08 -jar  /usr/local/app/hh123/hh123.jar --spring.profiles.active=test >>/usr/local/app/hh123.log >/dev/null 2>&1 &

ENTRYPOINT的命令基本一致,稍微注意下ENTRYPOINT的命令格式。

这个dockerfile的大体意思就是基础镜像为centos7,加入jdk,配置java环境,加入jar包用spring的方式启动jar包

创建镜像,

docker build -t centos-jar . 

部分信息

Sending build context to Docker daemon    347MB
Step 1/11 : FROM centos:7
 ---> 7e6257c9f8d8
Step 2/11 : RUN mkdir /usr/local/java
 ---> Running in 38d24a75b558
Removing intermediate container 38d24a75b558

创建容器并运行

docker run -dit -p 8088:8088 -v /usr/local/logs2:/usr/local/logs -v /usr/local/app/hh123/hh123.jar:/usr/local/app/hh123.jar --name jar centos-jar /bin/bash

这一串有点长啊 建议用docker-compose编排下

-p 这段 是暴露端口

-v 第一个是jar包自己输出的日志的地方,挂载目录

-v 第二个是挂载jar包,我是运行外面的jar包,我做测试环境的测试一下,Jenkins用maven打包发布到挂载目录后,重启下容器

docker stop id或者name ,docker start id  或者直接docker restart id,以后可能开发直接用docker打包

- name 容器名jar

看挂载目录日志地方已经启动好了

Docker 创建一个spring(jar)镜像服务启动容器_第1张图片

你可能感兴趣的:(docker,Linux,java)