在Docker中运行微服务注册中心Eureka

1、Docker简介:

作为开发者,经常遇到一个头大的问题:“在我机器上能运行”。而将SpringCloud微服务运行在Docker容器中避免了因环境差异带来的兼容性问题能够有效的解决此类问题。

通过Docker,开发者可以轻松地创建与生产环境一致的开发环境。通过简单的命令或自动化脚本,开发者可以在几秒内启动或停止服务,从而灵活应对业务负载的变化。

每个微服务作为一个独立的Docker容器运行,服务之间相互隔离,降低了服务间的耦合度。利用DockerCompose或Kubernetes等容器编排工具,可以实现微服务的自动化部署、管理和扩展。

在Docker容器中运行的微服务实例可以自动注册到SpringCloud的服务注册中心(如Eureka),并由其他服务发现和调用。这种服务发现机制使得微服务之间的通信和交互变得更加简单和高效。

Docker安装过程详见:Ubuntu安装Docker-CSDN博客

Eureka搭建过程及完整代码详见:

微服务1:搭建微服务注册中心(命令行简易版,不使用IDE)-CSDN博客

2、本文架构

本文将Eureka微服务放到Docker容器中并运行,通过浏览器访问Eureka微服务来进行测试。如下图所示:

3、改造现有Eureka微服务

现在,我们在已经搭建好的Eureka微服务上稍作修改,使之可以运行到Docker中,主要步骤如下:

1)在pom.xml中引入依赖包

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.13</version>
    <configuration>
        <repository>eureka-server-docker</repository>
        <tag>${version}</tag>
    </configuration>
</plugin>

2)编写Dockerfile:

Dockerfile放到项目根目录,与pom.xml同一级。

FROM:指定基础镜像,这里我们基于Java JDK的镜像。

COPY:复制文件,COPY <src> <dest>

FROM openjdk:8-jre-alpine

LABEL maintainer="cloud@sky.org"

ENV TZ=Asia/Beijing \
    DIST_NAME=microservice-eureka-server-1.0-SNAPSHOT

RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

COPY ./target/"$DIST_NAME.jar" /"$DIST_NAME.jar"

EXPOSE 8080

ENTRYPOINT java $JAVA_OPTS -jar /$DIST_NAME.jar

3)打包Eureka微服务

将Eureka打包成microservice-eureka-server-1.0-SNAPSHOT.jar:

sudo mvn clean package -DskipTests

4)Docker构建镜像:

sudo mvn dockerfile:build

查看镜像:

sudo docker images

4、在Docker中运行Eureka

sudo docker run -p 8080:8080 eureka-server-docker:1.0-SNAPSHOT

浏览器访问测试Eureka。

如果网络不通,可参见博文:VMware中Ubuntu系统Docker正常运行但网络不通(已解决)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值