spring cloud微服務docker啓動

1. 背景java

將系統拆分紅微服務,一個系統可能拆分紅十幾個服務,服務太多會影響發佈和管理,因此容器話以後易於管理和版本發佈,鑑於此將spring cloud微服無docker容器化。git

2.依賴環境github

Centos7.5,Maven環境 和 Docker環境spring

本人機器不是Windows系統,直接裝的Centos系統,可能系統有差別,Windows下應該也能夠,沒有具體測試。docker

3.編寫demo程序app

@RestController
public class ProviderController {

    private static Logger  logger = LoggerFactory.getLogger(ProviderController.class);

    @RequestMapping("/hello")
    public String hello(){
        logger.info("hello debug world "+new Date());
        logger.debug("hello debug world "+new Date());
        logger.error("hello debug world "+new Date());
        return "Hello World";
    }

}

4.先用maven編譯maven

在編譯時會下載相應的依賴jar包。ide

# 在模塊下面,具備pom文件的那層,執行如下命令
mvn clean && mvn install

 

5.編寫Dockerfilespring-boot

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

這是一個簡單的Dockerfile,微服務

From是須要的依賴,

COPY是將target下編譯好的包拷貝到docker虛擬環境的根目錄下

ENTRYPOINT是啓動後要執行的命令

6.docker命令編譯image

docker build -t docker-cloud/provider:1.0 .

編譯完成以後執行查看鏡像命令,會看到編譯出來的鏡像,能夠制定不一樣的tag版本。

# 查看docker鏡像
docker images

 

7.啓動編譯好的鏡像

 docker run --name provider -p 8090:8090 -d doceker-cloud/provider:1.0

--name 指定啓動的容器名稱

-p 8090:8090 將本地的8090端口和docker容器的8090端口作映射

-d 是後臺運行docker程序

最後面根的是要啓動的鏡像,我選擇啓動的是docker-cloud/provider鏡像,而且TAG是1.0的版本。

8.啓動以後查看docker有沒有啓動

#查看docker啓動的進程
docker ps

 

9. 啓動以後能夠看一下容器裏面的樣子

docker exec -it provider /bin/sh

其中app.jar就是咱們打包鏡像時拷貝過去的jar文件,logs目錄是我打的日誌

 

10.我想看日誌怎麼辦?

在docker裏面命令是頗有限的,不少命令用不了,像tailf這種命令就無法實時查看日誌,因此咱們就要把日誌文件掛載到磁盤的目錄下面。

docker run --name provider -v /home/zhaowei/docker-provider/logs:/logs -d docker-cloud/provider:1.0

-v 就是將目錄 /home/zhaowei/docker-provider/logs 掛載到容器的logs目錄下,這樣產生的日誌文件就直接能夠在磁盤目錄下查看了。

 

11. 個人想改啓動端口怎麼辦?

spring cloud程序通常能夠在applicaiton.properties裏指定啓動的端口號,但這樣有個侷限,就是寫死了,可是也無所謂,命令行能夠指定端口參數,命令行裏的參數優先級比配置文件的高,因此在啓動的時候指定端口參數就能夠了,可是咱們的啓動參數是寫在Dockerfile裏面的,因此這裏要修改Dockerfile文件了。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["sh","-c","java ${JAVA_OPTS} -jar /app.jar ${0} ${@}"]

咱們在啓動docker容器時命令是這樣的:

docker run --name provider2 -p 9090:9090 -v /home/zhaowei/docker-provider/logs:/logs -d docker-cloud/provider:2.0 --server.port=9090

12. 其餘

demo:https://github.com/liuzwei/docker-app.git

參考:這裏是更詳細的說明 https://github.com/spring-guides/top-spring-boot-docker

相關文章
相關標籤/搜索