把自己编写的Java服务运行在Docker上的前提是生成一个服务的镜像,可以使用Dockerfile文件配置镜像内容,然后就可以通过docker build命令生成镜像了。下面以之前编写的工程SpringCloudServiceProvider为例,生成此服务的镜像,并且了解Dockerfile文件的属性含义。
(1)生成服务jar包
首先编译工程,可以得到SpringCloudServiceProvider-0.0.1-SNAPSHOT.jar文件,这个文件之前介绍过,可以通过java-jar的方式直接启动,镜像文件也需要此文件才能启动服务。
(2)编写Dockerfile文件
Dockerfile文件其实可以理解为一个配置文件,它描述了一个镜像包含的内容和需要启动的方法等,本例先创建Provider服务的Dockerfile文件,后面会详细讲解文件中字段的含义。
FROM java:8
上面的代码中,用到了部分Dockerfile的属性。FROM指定了基础的镜像;ADD把jar文件放入镜像的/data/run目录;EXPOSE指定镜像对外暴露18010端口;WORKDIR指定镜像内的工作目录为/data/run;ENTRYPOINT配置了镜像的启动运行命令。
(3)生成镜像
把上面的jar包和Dockerfile文件放入同一目录下,然后运行如下命令,注意命令中结尾有“.”符号表示当前路径。 $docker build-t springcloud/provider:0.0.1. 运行命令后,可以看到显示如下内容。
(4)运行镜像并查看服务情况
现在镜像已经生成,可以通过docker images命令查看镜像,会得到如下输出。
REPOSITORY TAG IMAGE ID CREATED SIZE
springcloud/provider 0.0.1 e6ad17c121bc 2 minutes ago 700.5MB 这就是刚刚生成的镜像,可以使用docker run命令启动镜像。 $docker run-d--name provider--net=host-v/logs:/logs e6ad17c121bc
上面的命令指定容器在后台运行,和主机共享网络,把镜像内的/logs目录进行挂载,容器名为provider。运行命令后,可以通过docker ps命令查看容器情况,如图19-2所示(www.xing528.com)
图19-2 容器运行情况
(5)容器运行情况
通过Postman请求此容器服务,可以看到如图19-3所示的请求结果。
图19-3 请求容器中的服务
查看Eureka服务注册信息,可以看到新的容器服务已经注册进来,如图19-4所示。
图19-4 容器服务注册至Eureka
(6)常用指令
上面使用Dockerfile的方式创建了镜像,在文件中使用了部分Dockerfile的指令设置镜像的内容和执行方法。下面简单介绍Dockerfile的常用指令,见表19-2。
表19-2 Dockerfile指令
(续)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。