# syntax=docker/dockerfile:experimental
## 使用 DOCKER_BUILDKIT=1 docker build -t 'imageName:tag' . 的方式進行打包
# 下載平台 apigateway（可討論是否由後端人員交付一個版本包含平台與maven的 base image）

# 全局參數
ARG	    apiVersion=5.0.1.1000-SNAPSHOT
ARG	    platformPath=/platform
ARG	    backendName=sampleapp1_backend
ARG	    packpath=/package

## 1.基礎映像
#FROM alpine AS base
#
#ARG	    apiVersion
#ARG	    platformPath
#ARG	    backendName
#
### 1.1.下載DAP後端運行包 - 簡易式平台不需要下載
##ENV      nexusServer=repo.digiwincloud.com.cn
##WORKDIR       ${platformPath}
##RUN           apk add wget --no-cache
##RUN         wget     -nv    'https://'${nexusServer}'/nexus/service/rest/v1/search/assets/download?sort=version&repository=snapshots&group=com.digiwin&name=dwapiplatform-appbackend&maven.extension=war&maven.baseVersion='${apiVersion}  -O ${backendName}.war    \
##            && tar xvf ${backendName}.war \
##            && mv app_backend ${backendName}
###上述打包結果，路徑為/platform/sampleapp1_backend
			
# 2.打包應用代碼和資源
FROM maven:3.5.3-jdk-8 AS builder
ARG	    apiversion
ARG	    backendName
ARG	    packpath

ARG	    build=/build
ARG     devRootPath=develop
ARG	    modulePath=develop/module
ARG	    thirdParty=develop/DWThirdPartyLibrary

# 2.2.編譯代碼
# 2.2.1.在編譯文件夾下建立出開發根路徑
RUN	    mkdir -p ${build}/${devRootPath}
# 2.2.2.將源碼開發根路徑複製到編譯文件夾下的對應文件夾中
COPY    ${backendName}/${devRootPath} ${build}/${devRootPath}

## 2.2.3.編譯開發根路徑
RUN     --mount=type=cache,target=/root/.m2 mvn -f ${build}/${devRootPath}/pom.xml package
RUN     mkdir -p ${packpath}/${backendName}
RUN     cp -r ${build}/${devRootPath}/target/${backendName}/* ${packpath}/${backendName}

## 2.2.4.編譯第三方類庫並複製到打包路徑 lib 下 - 簡易式平台第三方類庫直接在 Root 引用
#RUN     --mount=type=cache,target=/root/.m2 mvn -f ${build}/${thirdParty}/pom.xml package
#RUN     cp -r ${build}/${thirdParty}/target/dependency/* ${packpath}/${backendName}/lib

## 2.2.5.編譯其他模組 - TODO 尚未驗證
#ENV         moduleName=DEMO_DAP_CURRENT
#ENV         pomVersion=5.0.1.1000-SNAPSHOT
#RUN         --mount=type=cache,target=/root/.m2 mvn -f ${build}/${modulepath}/${moduleName}/pom.xml package
#RUN         cp -r ${build}/${modulepath}/${moduleName}/target/* ${packpath}/${backendName}/lib

# 2.2.6.複製應用配置和其他類庫到打包文件夾下
# 2.2.6.1.應用配置文件夾
RUN	    mkdir -p ${packpath}/${backendName}/conf
COPY    ${backendName}/develop/conf/* ${packpath}/${backendName}/conf/
# 2.2.6.2.應用多語言文件夾
RUN	    mkdir -p ${packpath}/${backendName}/lang
COPY    ${backendName}/develop/lang/* ${packpath}/${backendName}/lang/
# 2.2.6.3.應用固定類庫文件夾(沒有放在 nexus 上的類庫)
RUN     mkdir -p ${packpath}/${backendName}/lib
COPY    ${backendName}/develop/lib/* ${packpath}/${backendName}/lib/

# 打包docker image
# 打包docker image
FROM registry.digiwincloud.com/dwsidecar/dwsidecar-1.0.0.0:1.0.0.33
ARG     backendName
ARG     packpath

COPY --from=builder ${packpath}/${backendName} /${backendName}

WORKDIR /${backendName}

RUN ls -r

RUN         chmod +x ./platform/bin/run.sh \
            && chmod +x ./platform/bin/stop.sh \
            && chmod +x ./platform/bin/docker/dockerEnv.sh \
            && chmod +x ./platform/bin/docker/dockerEnvReplace.sh \
            && chmod +x ./platform/bin/docker/dockerRun.sh
EXPOSE 22620
ENTRYPOINT ["/sampleapp1_backend/platform/bin/docker/dockerRun.sh"]
