前面的文章《跟我学 SpringCloud | 第十八篇: 微服务 Docker 化之基础环境》 https://www.geekdigging.com/2019/09/20/2549997705/ 我们介绍了基础环境系统和 JRE 的容器化, 这一节我们介绍 Spring Cloud 组件的容器化, 主要包括 eureka-server , gateway-server 和 provider-server .
1. Docker 化配置
这里我们根据 dockerfile-maven-plugin 这个 maven 插件来构建, 可以用来构建 docker 镜像的 maven 插件有很多, 其中使用比较多的包括 docker-maven-plugin , 这两个插件是同一个人在 GitHub 上开源的, docker-maven-plugin 被作者标记为不活跃的, 并且建议大家使用 dockerfile-maven-plugin , 作者可能是觉得 docker-maven-plugin 在使用的方式上并不是那么的优雅, 才又新写了 dockerfile-maven-plugin , 具体信息可以访问 docker-maven-plugin 在 GitHub 上的官方仓库 ( https://github.com/spotify/docker-maven-plugin ).
本篇文章我们将介绍如何在 IDE 工具 idea 中使用 Docker 工具, 并为我们的工程构建镜像.
2. 实战
2.1 创建父工程 chapter18
父工程 pom.xml 依赖文件:
代码清单: chapter18/pom.xml
- ***
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <version>${dockerfile.maven.version}</version>
- <executions>
- <execution>
- <id>default</id>
- <goals>
- <goal>build</goal>
- <goal>push</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <repository>${docker.image.prefix}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <buildArgs>
- <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- </configuration>
- </plugin>
- </plugins>
- </build>
这里笔者仅截取了 dockerfile-maven-plugin 相关的代码, 其余代码可参考 GitHub 仓库.
- <configuration>
- 标签中是一些有关于 Docker 镜像相关的配置, 包括当前的
- <repository>
- 和
- <tag>
- . 但是经笔者测试, 如果使用 idea 生成远端镜像 (本地无 Docker 服务), 这两个部分还是会为 null 的, 生成完后需要使用命令
- docker tag [imageId] [repository]:[tag]
- ***
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- ***
- FROM registry.cn-shanghai.aliyuncs.com/springcloud-book/java:8u221-jre
- ARG JAR_FILE
- ENV PROFILE default
- ADD target/${
- JAR_FILE
- } /opt/App.jar
- EXPOSE 8080
- ENTRYPOINT java ${
- JAVA_OPTS
- } -Djava.security.egd=file:/dev/./urandom -Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8 -Dspring.profiles.active=${
- PROFILE
- } -jar /opt/App.jar
- ${
- project.build.finalName
- }.jar
- .
- ***
- server:
- port: 8080
- spring:
- application:
- name: spring-cloud-eureka-server
- cloud:
- inetutils:
- use-only-site-local-interfaces: true
- eureka:
- instance:
- prefer-ip-address: true
- lease-expiration-duration-in-seconds: 90
- lease-renewal-interval-in-seconds: 30
- server:
- enable-self-preservation: false
- eviction-interval-timer-in-ms: 60000
- client:
- register-with-eureka: false
- service-url:
- defaultZone: http://${EUREKA_SERVER_HOST}:${EUREKA_SERVER_PORT}/eureka/
- management:
- endpoints:
- web:
- exposure:
- include: '*'
- [INFO] Image will be built as registry.cn-shanghai.aliyuncs.com/springcloud-book/eureka_server:0.0.1-SNAPSHOT
- [INFO]
- [INFO] Step 1/6 : FROM registry.cn-shanghai.aliyuncs.com/springcloud-book/java:8u221-jre
- [INFO]
- [INFO] Pulling from springcloud-book/java
- [INFO] Image 9d48c3bd43c5: Already exists
- [INFO] Image 828e49a80267: Already exists
- [INFO] Image 00b99dcc31ec: Already exists
- [INFO] Image e6e45bfebaec: Already exists
- [INFO] Digest: sha256:32d9a2557298d7b56997ded086baf043145ca178b71f6c8f47e76f837614bda0
- [INFO] Status: Downloaded newer image for registry.cn-shanghai.aliyuncs.com/springcloud-book/java:8u221-jre
- [INFO] ---> 5f59ebcc4b59
- [INFO] Step 2/6 : ARG JAR_FILE
- [INFO]
- [INFO] ---> Running in 8e3e51705681
- [INFO] Removing intermediate container 8e3e51705681
- [INFO] ---> 0bcb834dc28b
- [INFO] Step 3/6 : ENV PROFILE default
- [INFO]
- [INFO] ---> Running in 4a8e840e7a95
- [INFO] Removing intermediate container 4a8e840e7a95
- [INFO] ---> 11f97aef63ee
- [INFO] Step 4/6 : ADD target/${
- JAR_FILE
- } /opt/App.jar
- [INFO]
- [INFO] ---> 61c0ff0c5b6e
- [INFO] Step 5/6 : EXPOSE 8080
- [INFO]
- [INFO] ---> Running in 264bf0d042b6
- [INFO] Removing intermediate container 264bf0d042b6
- [INFO] ---> d951ab655bd5
- [INFO] Step 6/6 : ENTRYPOINT java ${
- JAVA_OPTS
- } -Djava.security.egd=file:/dev/./urandom -Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8 -Dspring.profiles.active=${
- PROFILE
- } -jar /opt/App.jar
- [INFO]
- [INFO] ---> Running in 4bd69be29edc
- [INFO] Removing intermediate container 4bd69be29edc
- [INFO] ---> 704768c9dd75
- [INFO] Successfully built 704768c9dd75
- [INFO] Successfully tagged registry.cn-shanghai.aliyuncs.com/springcloud-book/eureka_server:0.0.1-SNAPSHOT
- [INFO]
- [INFO] Detected build of image with id 704768c9dd75
- [INFO] Building jar: D:\Development\SpringCloudLearning\chapter18\eureka_server\target\eureka_server-0.0.1-SNAPSHOT-docker-info.jar
- [INFO] Successfully built registry.cn-shanghai.aliyuncs.com/springcloud-book/eureka_server:0.0.1-SNAPSHOT
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESS
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 01:38 min
- [INFO] Finished at: 2019-09-21T20:05:50+08:00
- [INFO] ------------------------------------------------------------------------
- docker run -p 8761:8080 --rm -e JAVA_OPTS='-server -Xmx1g' -e PROFILE='default' -e EUREKA_SERVER_HOST=192.168.0.128 -e EUREKA_SERVER_PORT=8762 registry.cn-shanghai.aliyuncs.com/springcloud-book/eureka_server:0.0.1-SNAPSHOT
- docker run -p 8762:8080 --rm -e JAVA_OPTS='-server -Xmx1g' -e PROFILE='default' -e EUREKA_SERVER_HOST=192.168.0.128 -e EUREKA_SERVER_PORT=8761 registry.cn-shanghai.aliyuncs.com/springcloud-book/eureka_server:0.0.1-SNAPSHOT
来源: http://www.bubuko.com/infodetail-3210840.html