Docker:2 构建并发布Java服务的示例

Posted OutPointException

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker:2 构建并发布Java服务的示例相关的知识,希望对你有一定的参考价值。

 

第一步:准备阶段

1、Centos7系统(基础环境)

2、Centos以及安装好 Docker服务;(docker与docker-compose的安装会有专门的章节说明)

3、jdk8的安装包,作为jar运行的基础环境;本次使用的是:jdk-8u231-linux-x64.tar.gz

4、可运行的Jar,本次使用的jar名称:test-example-1.0-SNAPSHOT.jar

第二步:资源放在一个文件夹下,并创建Dockerfile和docker-compose.yml

~]# mkdir example
~]# mv jdk-8u231-linux-x64.tar.gz example/
~]# mv test-example-1.0-SNAPSHOT.jar  example/
~]# cd example

1、创建Dockerfile
example]# vi Dockerfile

文件内容如下所示;

FROM centos
MAINTAINER mj

ENV LANG en_US.UTF-8

WORKDIR /home

RUN mkdir JDK

COPY jdk-8u231-linux-x64.tar.gz /home/
COPY test-example-1.0-SNAPSHOT.jar /home/

RUN tar zxf /home/jdk-8u231-linux-x64.tar.gz -C /home/JDK

ENV JAVA_HOME /home/JDK/jdk1.8.0_231
ENV PATH $PATH:$JAVA_HOME/bin

EXPOSE 8080

ENTRYPOINT ["java","-jar","test-example-1.0-SNAPSHOT.jar"," -Xms128m","-Xmx512m"]

 

2、创建docker-compose.yml文件

example]# vi docker-compose.yml

文件内容如下:

version: \'3\'
services:
  example:
    image: mj/example
    container_name: mj-example
    restart: always
    ports:
      - 8080:8080

yml文件字段名称说明:

services: 指定容器服务,下面可配多个服务(进行服务编排)
example: 服务名字,自己指定.这里就代表我的eureka服务
image: 指定启动的镜像,就是上边通过Dockerfile构建的镜像
container_name: 给容器起一个名字
restart: 可重启,使用always就好
ports: 声明映射端口

  

example]# ls -al 

如下图所示:

 

 

 

资料都准备好了,接下来就是构建并启动容器,发布服务了;

第三步:构建Docker镜像

example]# docker build -t mj/example . # 根据当前目录Dockerfile构建镜像

 

 

 此时,启动docker有两种方式:

1)通过docker命令直接启动发布docker容器服务;

example]# docker run -d -p 8080:8080  --name mj-example mj/example /bin/bash
 

2)通过docker-compse进行容器服务编排启动,即根据docker-compose.yml文件;

检查yml文件格式是否正确;
example]# docker-compose config
启动容器服务 example]# docker-compose up
停止并删除容器服务 example]# docker-compose down
强制启动重新建立容器 example]# docker-compose up -d --force-recreate

重新构建
example]# docker-compose build 或者docker-compose up --build

 

容器启动后如下图所示:

 

以上是关于Docker:2 构建并发布Java服务的示例的主要内容,如果未能解决你的问题,请参考以下文章

java操作docker示例(docker-java)

docker-compose 构建mongodb并导入基础数据示例

Docker - java netty_tcnative 的问题

sh Docker构建并运行示例脚本

docker jetty10 启动 war

Docker构建自定义镜像