使用docker-compose運行springcloud項目

前言:html

  學習Docker的過程當中,一直想使用Docker運行SpringCloud程序,今天就將搭建過程記錄下來,以做總結。linux

1、Docker安裝git

  這裏由於一些緣由,被迫寫了個Centos下的Docker安裝腳本。至於爲何被迫,這裏先埋下一個伏筆。github

#!/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

2、使用Maven插件生成鏡像spring

  在本地使用Maven插件能夠直接在遠程服務器生成鏡像,比較方便,可是此方法會暴露Docker服務的端口,可能產生隱患,請謹慎使用!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修改成容器名。json

eureka:
  client:
    serviceUrl:
#      defaultZone: http://localhost:1111/eureka
      defaultZone: http://eureka-server:1111/eureka    #註冊中心地址改成容器名

注意:centos

  請使用本身的docker服務地址,上面的地址本人作過改動;bash

  Dockerfile文件編寫請參考博客:docker部署spring cloud項目。請注意,此Dockerfile文件使用的基礎鏡像是 frolvlad/alpine-oraclejdk8:slim ,且我打開了服務器上的Docker端口。這兩個因素致使了我後面一直重裝系統,不得不寫一個腳本安裝docker。由於一旦使用 frolvlad/alpine-oraclejdk8:slim 鏡像,且Docker服務端口開放,個人服務器一定會被注入一個挖礦鏡像,從而成爲礦機!!所以,我強烈推薦使用官方鏡像:openjdk:8,且謹慎開放Docker服務端口。服務器

3、使用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

能夠看到,服務已經註冊到註冊中心而且能夠正常訪問。

 4、使用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項目就已經完成了,可是遠遠不夠到生產級別,還需繼續學習!

相關文章
相關標籤/搜索