网页设计和网站建设的课程设计,鲜花网站素材,wordpress 修改 meta,做网站排名有用吗oracle adf在我之前的一篇文章中#xff0c;我描述了如何创建一个Docker容器作为ADF应用程序的构建器。 在这里#xff0c;我将展示如何将此容器用作 在FN平台的功能 。 首先#xff0c;让我们更新容器#xff0c;使其符合功能要求#xff0c;这意味着可以将其作为接受某… oracle adf 在我之前的一篇文章中我描述了如何创建一个Docker容器作为ADF应用程序的构建器。 在这里我将展示如何将此容器用作 在FN平台的功能 。 首先让我们更新容器使其符合功能要求这意味着可以将其作为接受某些参数的可运行二进制文件进行调用。 在一个空文件夹中我创建了一个具有以下内容的Dockerfile只是一个具有此名称的简单文本文件 FROM efedorenko/adfbuilder
ENTRYPOINT [xargs,mvn,package,-DoracleHome/opt/Oracle_Home,-f] 该文件包含有关Docker的说明说明如何从现有映像中创建新的Docker映像上一篇文章中的efedorenko / adfbuilder并指定一个入口点以便容器知道由Docker 运行启动后该怎么做。命令。 在这种情况下每当我们运行一个容器时该容器都会为pom文件执行从stdin提取的名称的Maven 软件包目标。 这很重要因为Fn平台将stdin / stdout用于函数输入/输出作为标准方法。 在同一文件夹中我们执行命令以从我们的Docker文件中构建一个新的Docker映像fn_adfbuilder docker build -t efedorenko/fn_adfbuilder. 现在如果我们运行容器通过stdin传递pom文件名如下所示 echo -n /opt/MySampleApp/pom.xml | docker run -i --rm efedorenko/fn_adfbuilder 容器将在其内部执行我们实际需要的内容 mvn package -DoracleHome/opt/Oracle_Home -f/opt/MySampleApp/pom.xml 基本上这样做之后我们得到了一个充当函数的容器。 它为给定的pom文件构建一个应用程序。 让我们在Fn平台中使用此功能。 在本地计算机上安装Fn就像调用单个命令一样简单并在GitHub Fn项目页面上进行了介绍。 安装完Fn之后我们可以指定Docker注册表在其中存储函数容器的映像并启动Fn服务器 export FN_REGISTRYefedorenko
fn start 下一步是创建一个Fn应用程序它将使用我们的强大功能 fn apps create adfbuilderapp 对于这个新创建的应用程序我们必须指定一个指向函数约束器的路由以便该应用程序知道何时以及如何调用它 fn routes create --memory 1024 --timeout 3600 --type async adfbuilderapp /build efedorenko/fn_adfbuilder:latest 我们创建了一条路线说每当adfbuilderapp请求/ build资源时Fn平台应基于efedorenko存储库中最新版本的fn_adfbuilder映像创建一个新的Docker容器并运行它以提供1GB内存并将参数传递给stdin 默认模式。 此外由于建筑是一项耗时/耗资源的工作因此我们将以一个小时超时的异步模式调用该函数。 创建路由后我们可以使用Fn Cli调用该函数 echo -n /opt/MySampleApp/pom.xml | fn call adfbuilderapp /buildor over http:curl -d /opt/MySampleApp/pom.xml http://localhost:8080/r/adfbuilderapp/build 在这两种情况下平台都会将呼叫放入队列因为它是异步的并返回呼叫ID {call_id:01C5EJSJC847WK400000000000} 该功能现在正在运行我们可以通过多种不同方式检查它的运行情况。 由于函数调用只是创建和运行Docker容器因此我们可以通过获取所有正在运行的容器的列表来查看它 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 fnserver Fn创建了一个新容器并使用函数调用ID作为其名称。 我们可以将stdin / stdout附加到容器上看看里面发生了什么 docker attach 01C5EJSJC847WK400000000000 函数执行后我们可以使用Fn Rest API或Fn Cli来请求有关调用的信息 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仪表板以一种精美的方式监视函数调用 我们工作的结果是构建ADF应用程序的功能。 它的优点在于函数的使用者调用者仅使用基于HTTP的Rest API来构建应用程序而调用者并不关心如何以及在何处完成此工作。 但是调用者可以肯定地知道计算资源的使用时间不会超过完成工作所需的时间。 下次我们将尝试在Fn Flow中协调功能。 而已 翻译自: https://www.javacodegeeks.com/2018/02/fn-function-build-oracle-adf-application.htmloracle adf