Eureka注册服务器部署到阿里云服务器的docker上

阿里云服务器上docker的使用

    • 一、编写Eureka服务器
      • 1.idea上的操作
        • (1)新建Spring Initializr项目
        • (2)pom.xml
        • (3)修改application.yml
        • (4)把eureka-server打包(jar包)
      • 2.在服务器端的操作
        • (1)把eureka的jar通过xftp5传到云服务器上,注意后面docker build在哪个目录下,jar包就要放在那个目录下。
        • (2)编写dockerfile文件
        • (3)docker build
        • (4)docker run
      • 3.开启防火墙端口
        • (1)开启防火墙端口
        • (2)重启防火墙
      • 4.阿里云添加安全组
    • 二、微服务注册到Eureka,并调用docker的web api
      • 1.开启docker api (centos7)
      • 2.编写provider微服务
        • (1)项目创建过程和eureka一样
        • (2)编写application.yml
        • (3)编写controller类
        • (4)打包,xftp5传输到云服务器
      • 3.部署到docker
        • (1)dockerfile
        • (2)docker bulid
        • (3)docker run
      • 4.阿里云添加安全组
      • 5.检查是否eureka,看是否注册进去了。
      • 6.访问http://服务器ip:1111/getimages,看是否跳转到显示docker本地所有镜像的页面。
    • 三、高可用eureka,并部署到阿里云服务器docker上
      • 1.编写高可用eureka
      • 2.编写dockerfile
      • 3. docker build
      • 4.安装docker-compose
      • 5. 编写eureka的docker-compose.yml文件
        • (1)创建一个文件夹用于存放docker-compose.yml文件
        • (2)创建docker-compose.yml文件
        • (3)编排(在docker-compose.yml所在的路径下)
      • 6. 配置host(很重要)配置了这个peer1和peer2才有效
    • 四、服务提供者服务消费者注册到云服务器docker的高可用eureka集群中
      • 1.把jar包导入服务器,写dockerfile,并dockerbuild
      • 2.编写docker-compose.yml文件
      • 3.docker compose

一、编写Eureka服务器

1.idea上的操作

(1)新建Spring Initializr项目

Eureka注册服务器部署到阿里云服务器的docker上_第1张图片
Eureka注册服务器部署到阿里云服务器的docker上_第2张图片

(2)pom.xml

Eureka注册服务器部署到阿里云服务器的docker上_第3张图片
Eureka注册服务器部署到阿里云服务器的docker上_第4张图片
导入springcloud依赖


            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server

(3)修改application.yml

server:
  port: 8762                    # 指定该Eureka实例的端口
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
spring:
  application:
    name: eurekaserver

简单eureka标准配置
Eureka注册服务器部署到阿里云服务器的docker上_第5张图片
Eureka注册服务器部署到阿里云服务器的docker上_第6张图片

(4)把eureka-server打包(jar包)

Eureka注册服务器部署到阿里云服务器的docker上_第7张图片

2.在服务器端的操作

(1)把eureka的jar通过xftp5传到云服务器上,注意后面docker build在哪个目录下,jar包就要放在那个目录下。

(2)编写dockerfile文件

创建一个dockerfile文件,把下面的内容复制进去

FROM java:8
VOLUME /usr/test
ADD simple-eureka-0.0.1-SNAPSHOT.jar eureka.jar
EXPOSE 8762
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]

(3)docker build

这一步如果报错

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

是因为daemon没启动,请先启动daemon

systemctl daemon-reload
systemctl restart docker.service
docker build -f mydockerfile/eurekadockerfile -t test/eureka .

注意最后有个空格+. 别漏了。
这一步要是报错

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

执行下面指令。

systemctl daemon-reload
systemctl restart docker.service

(4)docker run

docker run -d -p 8762:8762 test/eureka

重启一下docker

systemctl restart docker

3.开启防火墙端口

(1)开启防火墙端口

firewall-cmd --zone=public --add-port=8762/tcp --permanent

(2)重启防火墙

firewall-cmd --reload

4.阿里云添加安全组

Eureka注册服务器部署到阿里云服务器的docker上_第8张图片

二、微服务注册到Eureka,并调用docker的web api

1.开启docker api (centos7)

vim /usr/lib/systemd/system/docker.service

在打开的文件的 ExecStart=/usr/bin/dockerd 后面加上一句

-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 

保存,退出

注 : 端口 2375 就是docker remoteApi的 端口,确保此端口linux没有被占用。

执行 重启 docker 命令 docker重新读取配置文件,并重新启动docker服务 命令

sudo systemctl daemon-reload && systemctl restart docker

2.编写provider微服务

(1)项目创建过程和eureka一样

(2)编写application.yml

server:
  port: 1111

spring:
  application:
    name: docker-images-getter
eureka:
  client:
    service-url:
      defaultZone: http://服务器ip:8762/eureka/
  instance:
    prefer-ip-address: true

(3)编写controller类

@Controller
public class ImagesGetterController {
    @GetMapping("/getimages")
    public ModelAndView getImages(){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("redirect:http://47.93.150.204:2375/images/json");
        return modelAndView;
    }
}

redirect:http://47.93.150.204:2375/images/json 跳转到docker web api接口 。
目前我就会这一种调用方式。
/images/json 查看docker中所有本地镜像

docker的webapi在docker官网看
Eureka注册服务器部署到阿里云服务器的docker上_第9张图片
docker api文档参考

(4)打包,xftp5传输到云服务器

3.部署到docker

(1)dockerfile

FROM java:8
VOLUME /usr/test
ADD sample-server-provider-0.0.1-SNAPSHOT.jar imagesgetter.jar
EXPOSE 1111 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/imagesgetter.jar"]

(2)docker bulid

docker build -f mydockerfile/imagesgetterdockerfile -t test/imagesgetter .

(3)docker run

docker run -d -p 1111:1111 test/imagesgetter

4.阿里云添加安全组

5.检查是否eureka,看是否注册进去了。

6.访问http://服务器ip:1111/getimages,看是否跳转到显示docker本地所有镜像的页面。

三、高可用eureka,并部署到阿里云服务器docker上

1.编写高可用eureka

application.yml

spring:
  application:
    name: microservice-discovery-eureka # 微服务实例的名称
# 第一个 eureka 环境
---
spring:
  profiles: peer1
server:
  port: 1001 # 开放的端口
eureka:
  instance:
    hostname: peer1
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://peer2:1002/eureka/  # 注册到另一个服务实例
    register-with-eureka: true
    fetch-registry: false
# 第二个 eureka 环境
---
spring:
  profiles: peer2
server:
  port: 1002 # 开放的端口
eureka:
  instance:
    hostname: peer2
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://peer1:1001/eureka/ # 注册到另一个服务实例
    register-with-eureka: true
    fetch-registry: false

2.编写dockerfile

FROM java:8
VOLUME /usr/test
ADD discovery-eureka-0.0.1-SNAPSHOT.jar eureka-01.jar
EXPOSE 1001
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka-01.jar"]

3. docker build

docker build -f mydockerfile/eurekaHighAvaliable-01 -t test/eureka-01 .

4.安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.7.0/docker-compose-`uname -s `-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose -v

5. 编写eureka的docker-compose.yml文件

(1)创建一个文件夹用于存放docker-compose.yml文件

(2)创建docker-compose.yml文件

version: '2'
services:
  peer1:
    hostname: peer1
    image: test/eureka-01
    ports:
      - 1001:1001
    environment:
      - spring.profiles.active=peer1
  peer2:
    hostname: peer2
    image: test/eureka-02
    ports:
      - 1002:1002
    environment:
      - spring.profiles.active=peer2

(3)编排(在docker-compose.yml所在的路径下)

docker-compose up -d

6. 配置host(很重要)配置了这个peer1和peer2才有效

Eureka注册服务器部署到阿里云服务器的docker上_第10张图片

vim etc/hosts
127.0.0.1   peer1
127.0.0.1   peer2

5.开启服务器防火墙端口

6.阿里云官网添加安全组

四、服务提供者服务消费者注册到云服务器docker的高可用eureka集群中

1.把jar包导入服务器,写dockerfile,并dockerbuild

2.编写docker-compose.yml文件

version: '2'
services:
  peer1:
    hostname: peer1
    image: test/eureka-01
    ports:
      - 1001:1001
    environment:
      - spring.profiles.active=peer1

  peer2:
    hostname: peer2
    image: test/eureka-02
    ports:
      - 1002:1002
    environment:
      - spring.profiles.active=peer2
  provider-2001:
    hostname: peer1
    image: test/provider
    container_name: provider-2001
    ports:
      - 2001:2001
    environment:
      - server.port=2001
  provider-2002:
    hostname: peer2
    image: test/provider
    container_name: provider-2002
    ports:
      - 2002:2002
    environment:
      - server.port=2002
  consumer:
    image: test/consumer
    ports:
      - 3001:3001
	  
	  https://gitee.com/guzhengxi/spring-cloud-config.git
	  

3.docker compose

你可能感兴趣的:(微服务,docker,docker,spring,boot,linux)