将微服务运行在Docker

使用Dockerfile构建镜像

以Eureka一章中的两个微服务eureka.registry和eureka.provider.user为例。本节使用的Docker宿主机IP为192.168.159.107。

第一步,通过mvn clean package命令将两个项目分别打包jar,例如:

eureka.registry-0.0.1-SNAPSHOT.jar和eureka.provider.user-0.0.1-SNAPSHOT.jar。

第二步,在Docker的宿主机上创建myDocker/app-registry、myDocker/app-provider两级目录,将两个jar文件上传至对应目录。
第三步,app-registry下新建文件Dockerfile:
FROM java:8
VOLUME /tmp
ADD eureka.registry-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

app-provider下新建文件Dockerfile:

基于哪个镜像
FROM java:8
将本地文件夹挂载到当前容器
VOLUME /tmp
复制文件到容器,也可直接写成*ADD eureka.provider.user-0.0.1-SNAPSHOT.jar /app.jar
ADD eureka.provider.user-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
声明要暴露的端口
EXPOSE 8881
配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
第四步,构建镜像。命令格式为:

docker build -t 仓库名称/镜像名称(:标签) Dockerfile的相对位置

构建eureka.registry的镜像并运行(最后的.表示当前目录):

docker build -t kolazz:5000/eureka.registry:0.0.1 **.**
docker run -d -p 8761:8761 kolazz:5000/eureka.registry:0.0.1

稍等一会,访问http://192.168.159.107:8761,发现微服务已正常启动。

第五步,构建eureka.provider.user的镜像并运行:
docker build -t kolazz:5000/eureka.provider.user:0.0.1 .
docker run -d -p 8881:8881 kolazz:5000/eureka.provider.user:0.0.1

稍等一会,访问http://192.168.159.107:8881/user,发现微服务已正常启动。

推荐阅读更多精彩内容