【快速學習】docker構建java專案實踐

noname 發表於 2022-01-23
Java Docker
之前都是直接用公司的DevOps來打包釋出,對容器映象相關並不瞭解,現在開始從零學習相關知識( 丟臉-_-|| )。

1. 建立maven專案

1. 從spring initializr下載webflux空專案

image.png

2. 新增測試介面

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    public RouterFunction<ServerResponse> routerFunction() {
        return RouterFunctions.route(RequestPredicates.path("/demo/hello/{name}"),
                request -> ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR)
                        .body(Mono.just("hello " + request.pathVariable("name")), String.class)
        );
    }
}

啟動專案並訪問http://localhost:8080/demo/hello/name,瀏覽器顯示hello name

2. 建立docker映象

1. 建立Dockerfile檔案

這裡直接用了公司的jdk11基礎映象:

#tencent konajdk11
FROM xxxx.xxxx.com/tjdk/tencentkona11

LABEL maintainer="[email protected]"

# 專案放在指定目錄下
RUN mkdir -p /app
ADD target/*.jar /app

#encoding settings
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

WORKDIR /app
CMD java -Dfile.encoding=utf-8 \
    -jar /app/demo-webflux-*.jar

2. 構建映象

將專案打包好的jar檔案Dockerfile檔案上傳到測試伺服器。(開發機上沒安裝docker,專門申請了臺測試伺服器來做測試,測試伺服器安裝了docker)。

  • 因為測試推送到公司的內部倉庫,先在命令列上登入倉庫:

    docker login xxx.xxx.com
  • 構建映象

    docker build -t xxx.xxx.com/xxx-dev/demo-webflux:latest -f Dockerfile .
  • 推送到倉庫

    docker push xxx.xxx.com/xxx-dev/demo-webflux:latest

    通過docker images 可以看到構建的映象。

3. 啟動容器

執行命令

docker run -p 8080:8080 -itd  xxx.xxx.com/xxx-dev/demo-webflux

詳細參考可見:Docker 命令大全
在瀏覽器上輸入:http://測試伺服器IP:8080/demo/hello/name,瀏覽器顯示hello name