本文共 4372 字,大约阅读时间需要 14 分钟。
Docker作为一个容器无论在生产环境还是开发环境,真的是让小编爱不释手,使用以前电脑放在家里用来做自己的私人服务器使用docker技术安装各种不同的服务真的是爽歪歪。本文通过介绍在docker中运行eureka服务注册中心项目来跟大家介绍一下docker运行spring cloud工程。
在idea中创建一天eureka注册中心的项目,编辑pom文件。
首先,加入eureka注册中心依赖
org.springframework.cloud spring-cloud-starter-netflix-eureka-server
如果在idea中运行eureka注册中心只添加上面依赖就可以了,如果要把项目使用docker容器中运行就需要将项目打成jar包,在编辑dockerfile文件构建成docker镜像文件,所以需要加入spring-boot-maven-plugin项目,用maven工具将maven打包成jar包,否则打包成jar包后找不到main函数。
org.springframework.boot spring-boot-maven-plugin
编辑完pom注册中心之后,就可以正常编辑eureka注册中心的业务逻辑,这里不是本文重点,本文就不再赘述了。
编辑完项目后可以使用maven工具的package命令,或者使用idea中的maven插件将项目打包,并使用java -jar命令测试运行。
编辑docker file文件可以分为以下几个步骤:
指定基础镜像
添加镜像作者
将可执行jar包添加到基础镜像的跟目录下
暴露项目网络端口
在基础镜像上中运行,即在基础镜像中执行的命令
这里需要注意的是,第三个参数需要和ADD命令中的第二个参数相同,因为在ADD命令中已讲可执行jar包添加到名称为第二个参数的容器镜像中,所以二者需要相同,否则构建是还报找不到可执行jar包的错误。
# 指定基础镜像FROM java:8# 作者MAINTAINER Strive to Positive Energy# 把可执行jar包复制到基础镜像的跟目录下ADD eureka3200-1.0-SNAPSHOT.jar /eureka3200.jar# 镜像要暴露端口,如果需要使用端口,在执行run命令时使用-p命令映射EXPOSE 3200# 在镜像运行,为容器后期执行的命令ENTRYPOINT ["java","-jar","/eureka3200.jar"]
DockerFile文件和可执行jar包导入Linux系统,DockerFile文件中ADD命令可中执行jar没有写文件路径,默认与DockerFile在同一路径下,如果不在同一路径下需要在jar文件名前添加文件所在路径。
使用docker build命令构建docker镜像:
docker build -t s2pe/eureka:v1.0 .
参数介绍:
-t 为指定镜像名字和TAG
. 为当前目录,这里实际上是一个剩下文路径
构建结果:
Sending build context to Docker daemon 45.18 MBStep 1/5 : FROM java:8 ---> d23bdf5b1b1bStep 2/5 : MAINTAINER Strive to Positive Energy ---> Using cache ---> f5df4502e2b6Step 3/5 : ADD eureka3200-1.0-SNAPSHOT.jar /eureka3200.jar ---> 20674a1a56c2Removing intermediate container 55cf687bec5bStep 4/5 : EXPOSE 3200 ---> Running in 57e304e6fa6f ---> d0b85c07eddbRemoving intermediate container 57e304e6fa6fStep 5/5 : ENTRYPOINT java -jar /eureka3200.jar ---> Running in 3c876154a91f ---> 828a05073472Removing intermediate container 3c876154a91fSuccessfully built 828a05073472
运行构建的docker镜像,访问docker容器:
docker run -d --name eureka -p 3200:3200 s2pe/eureka:v1.0
访问结果:
使用Intellij IDEA中的Docker插件也可以构建运行,首先需要在docker主机中配置远程访问docker,在idea中安装Docker插件,并连接docker宿主机。
从Run->Edit Configrations进入配置页面,需要配饰信息和注意点如下:
Name
运行环境名称,在idea中运行环境的名称,这里可以任意取名
Server
选择已经配置好的docker宿主机。
DockerFile
docker file文件
Context folder
上下文配置文件夹,这里指的是docker file文件上下文路径,上文的Docker文件中没有指定jar包的文件路径,所以这里的上下文配置文件夹需要配置成可执行jar包生成的文件夹。利用maven插件默认将jar生成在工程目录下的target文件夹下,所以Context folder应该写到target文件夹。
Image tag
docker镜像名称和TAG,对应docker build命令中的-t属性
Run build image
勾选这个属性,构建镜像时先构建可执行jar包
Container name
容器名称。
Publish expose ports to the host interfaces
选的暴露端口形式,因为该进程值暴露一个端口,所以选择Specifiy,在Bind ports中现在暴露的端口。
Bind ports
暴露端口,相当于docker run命令中的-p命令
Command preview
可以查看构建和运行命令。
Active tool windows
勾选工具栏窗口,可以看到构建运行中的日志。
运行日志:
Deploying 'eureka Dockerfile: eureka3200/src/main/Dockerfile'...Building image...Preparing build context archive...[==================================================>]10/10 filesDoneSending build context to Docker daemon...[==================================================>] 40.13MBDoneStep 1/6 : FROM java:8 ---> d23bdf5b1b1bStep 2/6 : MAINTAINER Strive to Positive Energy ---> Running in 061f13264587 ---> c9354e37b10dRemoving intermediate container 061f13264587Step 3/6 : VOLUME /tmp ---> Running in 5967c64716b3 ---> e917c8ebde82Removing intermediate container 5967c64716b3Step 4/6 : COPY /eureka3200-1.0-SNAPSHOT.jar /eureka3200.jar ---> 6a4c4cfd3d1fRemoving intermediate container 742e61aa7fbcStep 5/6 : EXPOSE 3200 ---> Running in 6c3ed881c55e ---> 4bbe1580bd8fRemoving intermediate container 6c3ed881c55eStep 6/6 : ENTRYPOINT java -jar /eureka3200.jar ---> Running in 63a7dd42d0d9 ---> f6a87bcd6d6dRemoving intermediate container 63a7dd42d0d9Successfully built f6a87bcd6d6dCreating container...Container Id: 8677558291e0b4426dc7344a021e5438591555127374d34ecd5d0f1676c61962Container name: 'eureka'Attaching to container 'eureka'...Starting container 'eureka''eureka Dockerfile: eureka3200/src/main/Dockerfile' has been deployed successfully.
在日志中可以看到构建运行的每个步骤,如果有错误可以在此查找。
转载地址:http://kntvb.baihongyu.com/