oracle adf_Fn函数来构建Oracle ADF应用程序
oracle adf
在我之前的一篇文章中,我描述了如何創(chuàng)建一個(gè)Docker容器作為ADF應(yīng)用程序的構(gòu)建器。 在這里,我將展示如何將此容器用作
在FN平臺(tái)的功能 。
首先,讓我們更新容器,使其符合功能要求,這意味著可以將其作為接受某些參數(shù)的可運(yùn)行二進(jìn)制文件進(jìn)行調(diào)用。 在一個(gè)空文件夾中,我創(chuàng)建了一個(gè)具有以下內(nèi)容的Dockerfile(只是一個(gè)具有此名稱的簡單文本文件):
FROM efedorenko/adfbuilder ENTRYPOINT ["xargs","mvn","package","-DoracleHome=/opt/Oracle_Home","-f"]該文件包含有關(guān)Docker的說明,說明如何從現(xiàn)有映像中創(chuàng)建新的Docker映像(上一篇文章中的efedorenko / adfbuilder),并指定一個(gè)入口點(diǎn),以便容器知道由Docker 運(yùn)行啟動(dòng)后該怎么做。命令。 在這種情況下,每當(dāng)我們運(yùn)行一個(gè)容器時(shí),該容器都會(huì)為pom文件執(zhí)行從stdin提取的名稱的Maven 軟件包目標(biāo)。 這很重要,因?yàn)镕n平臺(tái)將stdin / stdout用于函數(shù)輸入/輸出作為標(biāo)準(zhǔn)方法。
在同一文件夾中,我們執(zhí)行命令以從我們的Docker文件中構(gòu)建一個(gè)新的Docker映像(fn_adfbuilder):
docker build -t efedorenko/fn_adfbuilder.現(xiàn)在,如果我們運(yùn)行容器通過stdin傳遞pom文件名,如下所示:
echo -n "/opt/MySampleApp/pom.xml" | docker run -i --rm efedorenko/fn_adfbuilder容器將在其內(nèi)部執(zhí)行我們實(shí)際需要的內(nèi)容:
mvn package -DoracleHome=/opt/Oracle_Home -f/opt/MySampleApp/pom.xml基本上,這樣做之后,我們得到了一個(gè)充當(dāng)函數(shù)的容器。 它為給定的pom文件構(gòu)建一個(gè)應(yīng)用程序。
讓我們?cè)贔n平臺(tái)中使用此功能。 在本地計(jì)算機(jī)上安裝Fn就像調(diào)用單個(gè)命令一樣簡單,并在GitHub Fn項(xiàng)目頁面上進(jìn)行了介紹。 安裝完Fn之后,我們可以指定Docker注冊(cè)表,在其中存儲(chǔ)函數(shù)容器的映像并啟動(dòng)Fn服務(wù)器:
export FN_REGISTRY=efedorenko fn start下一步是創(chuàng)建一個(gè)Fn應(yīng)用程序,它將使用我們的強(qiáng)大功能:
fn apps create adfbuilderapp對(duì)于這個(gè)新創(chuàng)建的應(yīng)用程序,我們必須指定一個(gè)指向函數(shù)約束器的路由,以便該應(yīng)用程序知道何時(shí)以及如何調(diào)用它:
fn routes create --memory 1024 --timeout 3600 --type async adfbuilderapp /build efedorenko/fn_adfbuilder:latest 我們創(chuàng)建了一條路線,說每當(dāng)adfbuilderapp請(qǐng)求/ build資源時(shí),Fn平臺(tái)應(yīng)基于efedorenko存儲(chǔ)庫中最新版本的fn_adfbuilder映像創(chuàng)建一個(gè)新的Docker容器,并運(yùn)行它以提供1GB內(nèi)存并將參數(shù)傳遞給stdin (默認(rèn)模式)。
? 此外,由于建筑是一項(xiàng)耗時(shí)/耗資源的工作,因此我們將以一個(gè)小時(shí)超時(shí)的異步模式調(diào)用該函數(shù)。 創(chuàng)建路由后,我們可以使用Fn Cli調(diào)用該函數(shù):
在這兩種情況下,平臺(tái)都會(huì)將呼叫放入隊(duì)列(因?yàn)樗钱惒降?#xff09;并返回呼叫ID:
{"call_id":"01C5EJSJC847WK400000000000"}該功能現(xiàn)在正在運(yùn)行,我們可以通過多種不同方式檢查它的運(yùn)行情況。 由于函數(shù)調(diào)用只是創(chuàng)建和運(yùn)行Docker容器,因此我們可以通過獲取所有正在運(yùn)行的容器的列表來查看它:
docker psCONTAINER ID? ? ? ? IMAGE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CREATED ? ? ? ? ? ? STATUS ? ? ? ? ? ? ? ?NAMES6e69a067b714? ? ? ? efedorenko/fn_adfbuilder:latest ? ? 3 seconds ago ? ? ? Up 2 seconds ? ? ? ? ?01C5EJSJC847WK400000000000e957cc54b638? ? ? ? fnproject/ui ? ? ? ? ? ? ? ? ? ? ? ?21 hours ago? ? ? ? Up 21 hours ? ? ? ? ? clever_turing68940f3f0136? ? ? ? fnproject/fnserver ? ? ? ? ? ? ? ? ?27 hours ago? ? ? ? Up 27 hours ? ? ? ? ? fnserverFn創(chuàng)建了一個(gè)新容器,并使用函數(shù)調(diào)用ID作為其名稱。 我們可以將stdin / stdout附加到容器上,看看里面發(fā)生了什么:
docker attach 01C5EJSJC847WK400000000000函數(shù)執(zhí)行后,我們可以使用Fn Rest API(或Fn Cli)來請(qǐng)求有關(guān)調(diào)用的信息:
http://localhost:8080/v1/apps/adfbuilderapp/calls/01C5EJSJC847WK400000000000{"message":"Successfully loaded call","call":{"id":"01C5EJSJC847WK400000000000","status":"success","app_name":"adfbuilderapp","path":"/build","completed_at":"2018-02-03T19:52:33.204Z","created_at":"2018-02-03T19:46:56.071Z","started_at":"2018-02-03T19:46:57.050Z","stats":[{"timestamp":"2018-02-03T19:46:58.189Z","metrics":……
http://localhost:8080/v1/apps/adfbuilderapp/calls/01C5EJSJC847WK400000000000/log{"message":"Successfully loaded log","log":{"call_id":"01C5EKA5Y747WK600000000000","log":"[INFO] Scanning for projects...\n[INFO] ------------------------------------------------------------------------\n[INFO] Reactor Build Order:\n[INFO] \n[INFO] Model\n[INFO] ViewController\n[INFO]我們還可以使用Fn UI儀表板以一種精美的方式監(jiān)視函數(shù)調(diào)用:
我們工作的結(jié)果是構(gòu)建ADF應(yīng)用程序的功能。 它的優(yōu)點(diǎn)在于,函數(shù)的使用者(調(diào)用者)僅使用基于HTTP的Rest API來構(gòu)建應(yīng)用程序,而調(diào)用者并不關(guān)心如何以及在何處完成此工作。 但是調(diào)用者可以肯定地知道,計(jì)算資源的使用時(shí)間不會(huì)超過完成工作所需的時(shí)間。
下次,我們將嘗試在Fn Flow中協(xié)調(diào)功能。
而已!
翻譯自: https://www.javacodegeeks.com/2018/02/fn-function-build-oracle-adf-application.html
oracle adf
總結(jié)
以上是生活随笔為你收集整理的oracle adf_Fn函数来构建Oracle ADF应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机死机了到底怎么办
- 下一篇: 樱花和桃花之间的区别 樱花和桃花的区别是