Spring cloud 是当下最煊赫一时的微服务套件,咱们将介绍如何整合Docker容器达到高效快捷的构建发布
采用了dockerfile-maven-plugin插件发布镜像到远程docker主机,该部分详细教程请看 使用Maven插件快捷打包发布远程Docker镜像java
如何开放远程docker主机远程控制端口请看 使用Maven插件快捷打包发布远程Docker镜像mysql
# 能够直接在父工程pom内添加插件,各子项目将自动继承插件依赖
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
须要为各须要发布为docker镜像的服务项目在其根目录添加Dockerfile文件web
# dockerfile 基础配置
FROM daocloud.io/library/java:8u40-b22
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} /app/app.jar
WORKDIR /app/
# 该镜像须要暴露的接口
EXPOSE 8889
ENTRYPOINT ["java","-jar","./app.jar"]
执行发布镜像sql
mvn clean package dockerfile:build -DskipTests
能够看到微服务中的各服务项目都被已经被发布到了远程docker镜像docker
将各服务都跑起来数据库
docker run -d -p 8889:8889 --name hnister-eureka-server hnister/hnister-eureka-server
但如今还有一个问题就是如何引入mysql等组件到docker中呢网络
如何构建一个外部可访问的mysql docker容器请看:Docker 构建Mysql容器并对外提供服务app
如今各镜像已经构建完毕,如何让各容器相互访问呢,之前docker采用link的方式,但这种方式已经不被推荐了。
咱们能够采用network来方便快捷的达成咱们所指望的效果;maven
建立新networksvg
docker network create hnister
network被建立成功,在运行容器时指定network
# 经过--network 结合 --network-alias 指定网络
docker run -d -p 8889:8889 --name hnister-eureka-server --network hnister hnister/hnister-eureka-server
docker run -d -p 8889:8889 --name hnister-mysql --network hnister --network-alias mysql.hnister.cn mysql
对已经运行的容器连接到network,而其余服务在加入了该network后能够经过alias来访问主机如连接到数据库mysql
jdbc:mysql://mysql.hnister.cn/hnister
对于已经启动的容器能够使用命令来加入自建network
docker network connect hnister hnister-eureka-server
这样全部的容器就都在一个network内了能够相互访问