使用docker-compose运行springcloud项目


前言:

  学习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-CE
yum makecache fast
yum install docker-ce-18.06.0.ce -y
# Step 4: 开启Docker服务
systemctl restart docker

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://vcugatat.mirror.aliyuncs.com"],
  "hosts": [
    "tcp://0.0.0.0:0306",
    "unix:///var/run/docker.sock"
  ]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

二、使用Maven插件生成镜像

  在本地使用Maven插件可以直接在远程服务器生成镜像,比较方便,但是此方法会暴露Docker服务的端口,可能产生隐患,请谨慎使用!

<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>
    <configuration>
        <!-- Docker服务地址 -->
        <dockerHost>http://122.152.000.000:6030</dockerHost>
        <!-- 镜像名 -->
        <imageName>${project.artifactId}</imageName>
        <!-- Dockerfile文件地址 -->
        <dockerDirectory>src/main/docker</dockerDirectory>
        <imageTags>1.0</imageTags>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

application.yml配置文件中,注册中心的ip修改为容器名。

eureka:
  client:
    serviceUrl:
#      defaultZone: http://localhost:1111/eureka
      defaultZone: http://eureka-server:1111/eureka    #注册中心地址改为容器名

注意:

  请使用自己的docker服务地址,上面的地址本人做过改动;

  Dockerfile文件编写请参考博客:docker部署spring cloud项目。请注意,此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-server docker run -d --name provider -p 8000:8000 --network cloud provider docker 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-server

networks:
    clooud:
        driver: bridge

在此docker-compose.yml目录,运行docker-compose up -d,OK。

至此,使用docker搭建springcloud项目就已经完成了,但是远远不够到生产级别,还需继续学习!

优质内容筛选与推荐>>
1、Extjs 根据gridPanel中其他列值改变某一列的内容字体颜色
2、Bone Collector
3、.NET小常识——答你所问
4、Add two numbers [LeetCode]
5、(bzoj1337 || 洛谷P1742 最小圆覆盖 )|| (bzoj2823 || 洛谷P2533 [AHOI2012]信号塔)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn