Spring cloud 微服务docker容器化最佳实践

 

 

Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布
采用了dockerfile-maven-plugin插件发布镜像到远程docker主机,该部分详细教程请看 使用Maven插件快捷打包发布远程Docker镜像

添加docker插件依赖

如何开放远程docker主机远程控制端口请看 使用Maven插件快捷打包发布远程Docker镜像

# 可以直接在父工程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>

 

添加Dockerfile文件

需要为各需要发布为docker镜像的服务项目在其根目录添加Dockerfile文件

# 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"]

 

执行发布镜像

mvn clean package dockerfile:build -DskipTests

 

这里写图片描述
可以看到微服务中的各服务项目都被已经被发布到了远程docker镜像

运行

将各服务都跑起来

docker run -d -p 8889:8889 --name hnister-eureka-server hnister/hnister-eureka-server

 

但现在还有一个问题就是如何引入mysql等组件到docker中呢

数据库等服务的引入

如何构建一个外部可访问的mysql docker容器请看:Docker 构建Mysql容器并对外提供服务

容器间网络互通

现在各镜像已经构建完毕,如何让各容器相互访问呢,以前docker采用link的方式,但这种方式已经不被推荐了。
我们可以采用network来方便快捷的达成我们所期望的效果;

创建一个新的network

创建新network

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内了可以相互访问

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值