前言:
学习Docker的过程中,一直想使用Docker运行SpringCloud程序,今天就将搭建过程记录下来,以作总结。
一、Docker安装
这里因为一些原因,被迫写了个Centos下的Docker安装脚本。至于为什么被迫,这里先埋下一个伏笔。
#!/bin/bash# Centos新版本Docker安装:https://www.cnblogs.com/Peter2014/p/7704306.html# step 1: 安装必要的一些系统工具yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 添加软件源信息yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 更新并安装 Docker-CEyum makecache fastyum install docker-ce-18.06.0.ce -y# Step 4: 开启Docker服务systemctl restart dockermkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://vcugatat.mirror.aliyuncs.com"], "hosts": [ "tcp://0.0.0.0:0306", "unix:///var/run/docker.sock" ]}EOFsystemctl daemon-reloadsystemctl restart dockersystemctl enable docker
二、使用Maven插件生成镜像
在本地使用Maven插件可以直接在远程服务器生成镜像,比较方便,但是此方法会暴露Docker服务的端口,可能产生隐患,请谨慎使用!
com.spotify docker-maven-plugin 1.0.0 http://122.152.000.000:6030 ${project.artifactId} src/main/docker 1.0 / ${project.build.directory} ${project.build.finalName}.jar
application.yml配置文件中,注册中心的ip修改为容器名。
eureka: client: serviceUrl:# defaultZone: http://localhost:1111/eureka defaultZone: http://eureka-server:1111/eureka #注册中心地址改为容器名
注意:
请使用自己的docker服务地址,上面的地址本人做过改动;
Dockerfile文件编写请参考博客:。请注意,此Dockerfile文件使用的基础镜像是 frolvlad/alpine-oraclejdk8:slim ,且我打开了服务器上的Docker端口。这两个因素导致了我后面一直重装系统,不得不写一个脚本安装docker。因为一旦使用 frolvlad/alpine-oraclejdk8:slim 镜像,且Docker服务端口开放,我的服务器必定会被注入一个挖矿镜像,从而成为矿机!!因此,我强烈推荐使用官方镜像:openjdk:8,且谨慎开放Docker服务端口。
三、使用Docker搭建SpringCloud项目
常规启动三个镜像,容器是不能联通的,必须手动为三个容器创建一个共同的网络,容器间才可以保持通讯。 首先创建一个名为cloud的桥接网络docker network create -d bridge cloud 依次启动三个镜像,并且连接到创建的cloud网络上docker run -d --name eureka-server -p 1111:1111 --network cloud eureka-serverdocker run -d --name provider -p 8000:8000 --network cloud providerdocker run -d --name consumer -p 8001:8001 --network cloud consumer
可以看到,服务已经注册到注册中心并且可以正常访问。
四、使用Docker-compose搭建springcloud项目
version: "3"services: eureka-server: image: eureka-server:1.0 ports: - "1111:1111" volumes: - /usr/local/cloud/logs/eureka-server:/logs networks: - cloud #container_name: simple-provider-user: image: simple-provider-user:1.0 ports: - "8000:8000" volumes: - /usr/local/cloud/logs/provider:/logs networks: - cloud depends_on: - eureka-server simple-consumer-movie: image: simple-consumer-movie:1.0 ports: - "8001:8001" volumes: - /usr/local/cloud/logs/consumer:/logs networks: - cloud depends_on: - eureka-servernetworks: clooud: driver: bridge
在此docker-compose.yml目录,运行docker-compose up -d,OK。
至此,使用docker搭建springcloud项目就已经完成了,但是远远不够到生产级别,还需继续学习!