使用docker-compose執行springcloud專案
阿新 • • 發佈:2018-12-22
前言:
學習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
可以看到,服務已經註冊到註冊中心並且可以正常訪問。