在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中引入依赖包

html 复制代码
<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>

html 复制代码
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:

bash 复制代码
sudo mvn clean package -DskipTests

4)Docker构建镜像:

bash 复制代码
sudo mvn dockerfile:build

查看镜像:

bash 复制代码
sudo docker images

4、在Docker中运行Eureka

bash 复制代码
sudo docker run -p 8080:8080 eureka-server-docker:1.0-SNAPSHOT

浏览器访问测试Eureka。

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

相关推荐
大道归简5 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
zeruns8025 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~6 小时前
Docker
docker·容器
疯狂的大狗6 小时前
docker进入正在运行的容器,exit后的比较
运维·docker·容器
长天一色6 小时前
【Docker从入门到进阶】01.介绍 & 02.基础使用
运维·docker·容器
伊玛目的门徒6 小时前
docker 搭建minimalist-web-notepad
运维·docker·notepad
theo.wu9 小时前
使用Buildpacks构建Docker镜像
运维·docker·容器
wusam18 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习04(环境准备)
学习·docker·centos
wusam21 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器