在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博客

相关推荐
m0_4887776513 小时前
运用Docker-compose编排部署设备管理平台(包含nginx的https访问)
docker·容器·docker-compose·服务统一管理
我爱学习好爱好爱13 小时前
Docker Compose部署SpringBoot2+Vue3+redis项目(Rockylinux9.6)
redis·docker·容器
tzhou6445214 小时前
Docker Compose 编排与 Harbor 私有仓库
运维·docker·容器
摇滚侠14 小时前
CentOS 7 Linux 离线安装 Docker:离线安装包、依赖文件、安装步骤
linux·docker·centos
计算机小手15 小时前
Kong + Konga 网关入门实践:Docker 部署、反向代理与插件使用指南
运维·经验分享·网络协议·docker·kong·开源软件
特级业务专家15 小时前
这下发布不需要Jenkins了
linux·git·docker
回忆是昨天里的海15 小时前
docker自定义网络-简单总结
运维·docker·容器
.生产的驴15 小时前
DockerCompoe 部署注册中心Nacos 一键部署 单机+Mysql8
java·linux·运维·spring boot·缓存·docker·doc
tzhou6445216 小时前
Docker 部署 Nginx HTTPS 服务(CentOS 7)
nginx·docker·https
iconball16 小时前
个人用云计算学习笔记 --32 Docker和docker swarm
运维·笔记·学习·docker·容器·云计算