在当今瞬息万变的微服务世界中,开发人员需要在运行时部署方面变得灵活而敏捷。 传统的开发车间现在使用各种运行时环境。 最受欢迎的两个是Java和Node.js,有时在容器(Docker)中。
开发人员需要一种将这些多样化的业务资产公开为API的方法,以便可以被包括移动设备在内的各种客户端使用。 面临的挑战是,这些环境中的每一个都单独且略有不同地公开API,这使潜在的消费者(组织内部和外部)难以发现全套可用资产。
借助IBM®WebSphere®Application Server Liberty,您可以使用集合来组织服务器,以有效地向您的应用程序提供应用程序服务。 您可以将Liberty服务器组织到集合中,以支持集群,管理以及对多个Liberty服务器起作用的其他操作。
通过WebSphere Liberty 17.0.0.1中的增强功能,您可以创建Liberty集合环境来部署和管理混合工作负载。 Liberty 17.0.0.1支持Java,Node.js,Docker中的WebSphere Liberty和Docker中的Node.js,其框架始终将可用的API聚合到一个目录中。 现在,API的使用者可以在一个地方查看和调用Liberty集合中的所有业务资产,而不管它们的实现方式如何。 API开发人员可以自由修改实现,例如从Node.js切换到Java,而不会中断API客户端。
本教程演示了如何公开您和其他开发人员可以在浏览器中查看的这四个不同运行时环境的API,这些环境在WebSphere Liberty集体浏览器中列出。
您将学习如何使用Docker中的WebSphere Liberty,Node.js,Node.js和Docker成员中的WebSphere Liberty创建Liberty集合环境。 然后,您将学习在基于OpenAPI和Swagger的集体API资源管理器中公开这些API。
您可以使用WebSphere Liberty Admin Center或部署REST API来部署集合体的成员。 本教程重点介绍通过使用管理中心将Node.js和Docker成员部署到集合体。 接下来,它逐步介绍了公开API的步骤。
注意:以下功能的版本基于WebSphere Liberty 17.0.0.1.。
collectiveController-1.0
(有关更多信息,请参见Collective Controller 。) adminCenter-1.0
(有关更多信息,请参阅管理中心 。) apiDiscovery-1.0
(有关更多信息,请参见API Discovery 1.0 。)
collectiveMember-1.0
clusterMember-1.0
apiDiscovery-1.0
localConnector-1.0
ejbLite-3.2
jsf-2.2
jaxws-2.2
websocket-1.1
jdbc-4.1
cdi-1.2
jsp-2.3
jpa-2.1
jaxrs-2.0
jndi-1.0
beanValidation-1.1
ldapRegistry-3.0
要安装Node.js V4.7.3,请完成以下步骤:
https://nodejs.org
下载node-v4.7.3-linux-x64.tar.gz
: # wget https://nodejs.org/dist/v4.7.3/node-v4.7.3-linux-x64.tar.gz
node-v4.7.3-linux-x64.tar.gz
文件node-v4.7.3-linux-x64.tar.gz
压缩到/usr/local
: # cd /usr/local
# tar --strip-components 1 -xzf /node-v4.7.3-linux-x64.tar.gz
npm
, node-gyp-install
apiconnect-collective-member
node-gyp-install
, apic
和apiconnect-collective-member
: # cd /root
# npm install -g npm
# npm install -g node-gyp-install
# npm cache clear
# npm install -g apiconnect-collective-member
# npm install -g apiconnect
/usr/local/bin
目录以查看node.js
, npm
和apiconnect-collective-member
的安装: # ls -l /usr/local/bin
total 24252
lrwxrwxrwx 1 root root 41 Feb 22 18:17 apic -> ../lib/node_modules/apiconnect/bin/cli.js
-rwxrwxr-x 1 500 500 24830187 Jan 31 16:05 node
lrwxrwxrwx 1 root root 43 Feb 22 18:11 node-gyp-install -> ../lib/node_modules/node-gyp-install/bin.js
lrwxrwxrwx 1 root root 38 Feb 22 18:10 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxrwxrwx 1 root root 60 Feb 22 18:13 wlpn -> ../lib/node_modules/apiconnect-collective-member/bin/wlpn.js
lrwxrwxrwx 1 root root 71 Feb 22 18:13 wlpn-collective -> ../lib/node_modules/apiconnect-collective-member/bin/wlpn-collective.js
lrwxrwxrwx 1 root root 67 Feb 22 18:13 wlpn-server -> ../lib/node_modules/apiconnect-collective-member/bin/wlpn-server.js
# node -v
v4.7.3
# apic -v
API Connect: v5.0.6.1 (apiconnect: v2.5.17)
wlpn
和wlpn-collective
版本: # wlpn --ext-version
wlpn: v2.2.1 (API Connect: v5.0.6.2)
plugins 3.3.5
wlpn-cli-collective 2.3.2 (8f17e4aa6a04569d2048a5200ed0c0c7779577c4)
wlpn-cli-server 2.7.4 (7d16e9a47682c921cadc45b07d7c18ad4d94f0b6)
# wlpn-collective version
apiconnect-collective-member: v1.5.1 (apiconnect-collective-member: v1.5.1)
本节演示如何使用API Discovery 1.0功能设置Liberty集合并配置控制器以使用特定的标头,标题和描述为该集合定制WebSphere Liberty集合资源管理器,您和其他开发人员可以在其中查看公开的API。浏览器。 您可以在以下博客文章中了解有关这些功能的更多信息: Liberty的OpenAPI支持的新增强功能 。 有关设置Liberty集合的更多信息,请参阅“ 配置Liberty集合” 。
# wlp/bin/server create myController
# wlp/bin/collective create myController –keystorePassword=controllerKSPassword
server.xml
文件中。 server.xml
文件中启用以下功能,以启用集合,管理中心和API发现功能。
collectiveController-1.0
adminCenter-1.0
apiDiscovery-1.0
指定管理员用户ID和密码。 server.xml
文件中添加以下
信息以自定义横幅,标题和描述:
该swaggerDefinition
参数指向扬鞭定义的位置.yaml
或.json
包含自定义标题,描述和横幅信息文件。
swaggerDef.yaml
文件:
w
lp/usr/server/myController/custom
目录。 swaggerDef.yaml
放在自定义目录中。 swaggerDef.yaml
文件。 行"description":"List of available API",
和"title":"Liberty REST APIs with Custom Banner",
是自定义信息。 {
"swagger":"2.0",
"info":{
"description":"List of available API",
"version":"1.0.0",
"title":"Liberty REST APIs with Custom Banner",
"x-ibm-css":"${server.config.dir}/css/custom-header.css",
"termsOfService":"http://swagger.io/terms/",
"contact":{
"email":"[email protected]"
},
"license":{
"name":"Apache 2.0",
"url":"http://www.apache.org/licenses/LICENSE-2.0.html"
}
}
}
wlp/usr/server/myController/css
目录。 custom-header.css
文件放在css
目录中。 custom-header.css
文件: .swagger-section #header {
background-image: url(images/custom-logo.png);
background-repeat: no-repeat;
background-position: 14px 5px;
background-size: 150px 45px;
background-color: #0C1F95;
padding: 14px;
}
background-image
具有custom-logo.png
文件的位置,该文件是自定义徽标图像。 本教程使用SVT徽标,如步骤7的屏幕截图所示。
wlp/usr/server/myController/css/images
目录。 custom-logo.png
文件放在images目录中。 # wlp/bin/server start myController –clean
您可以从GitHub上的tam512 / restapi4runtimes下载样本WebSphere Liberty控制器server.xml
文件。
本节演示如何将两个Liberty服务器部署到Liberty集合控制器。 在以下示例中,两个Liberty成员上都安装了一个名为SocialSphere
的Java应用程序。
# wlp/bin/server create server1
# wlp/bin/server create server2
server1
加入Liberty集体: # wlp/bin/collective join server1 --host=controllerHostname --port=httpsPort --user=adminUser --password=adminPassword --keystorePassword=memberKSPassword
server.xml
文件中。 server.xml
文件以获取Java应用程序的所有信息。 server.xml
文件和一个相关的social.xml
文件。) server2
加入Liberty集合并配置服务器。 server.xml
文件,以便某些API是私有的。 在样本social.xml
文件中, SocialSphere
应用程序中的SocialSphereAllergyForecast
API是私有的。 请参见以下示例:
https://
controllerHost
:
httpsPort
/adminCenter
查看它们。 单击浏览>服务器以查看Liberty集合中的所有服务器。 在本教程的示例中,两个Liberty成员与SocialSphere
应用程序一起部署在名为SSCluster
的Liberty服务器集群SSCluster
。 以下屏幕截图显示了管理中心的外观:
在本节中,您将学习如何在Node.js机器上使用LoopBack(Node.js框架)创建示例应用程序。 然后,将Node.js服务器部署到Liberty集合体。
helloworldsample
和notes
。 在Node.js服务器上部署helloworldsample
应用程序。 如第4步所述,在Docker中使用Node.js部署notes
应用程序。有关创建Node.js LoopBack应用程序的更多信息,请参见npm,Inc网站上的API Connect开发人员工具包示例代码 。
npm install -g apiconnect
。 # apic loopback --name helloworldsample
# apic loopback --name notes
apic loopback
命令的目录中看到两个名为helloworldsample
文件夹和notes
,如以下屏幕截图所示:
在每个应用程序文件夹中,您会看到一个package.json
文件以及common
, definitions
, node_modules
和server
目录。
.tgz
的存档文件中。 helloWorld
和notes
目录中运行以下命令,以创建hellworldsample-1.0.0.tgz
和notes-1.0.0.tgz
文件: # wlpn-server pack hellworldsample
Finished packing to /opt/hellworldsample-1.0.0.tgz
# wlpn-server pack notes
Finished packing to /opt/notes-1.0.0.tgz
wlpn-collective
命令来运行registerHost
或updateHost
: # wlpn-collective registerHost targetHost --host=controllerHost --port=controllerHTTPSPort --user=adminUser --password=adminPassword --rpcUser=osUser --rpcUserPassword=osPassword --autoAcceptCertificates
rpcUser
必须对目标部署位置具有操作系统权限。
registerHost
已经注册到Liberty集合,并且有一些信息需要更新,例如新的pcUserPassword
,那么您需要运行updateHost
命令。 # wlpn-collective updateHost targetHost --host=controllerHost --port=controllerHTTPSPort --user=adminUser --password=adminPassword --rpcUser=osUser --rpcUserPassword=osPassword --autoAcceptCertificates
hellworldsample-1.0.0.tgz
应用程序放在您访问管理中心的同一台计算机上的目录中,例如C:\nodejsApps
。
配置wlpn.appPort
和wlpn.adminPort
以避免在部署多个Node.js服务器时出现重复端口。 remoteFileAccess参数包含已部署到集合体的Node.js应用程序的位置。
–clean
选项重新启动控制器: # wlp/bin/server stop myController --clean
http://c
ontrollerHost
:
httpsPort
/adminCenter
与在所述所定义的用户ID和密码quickStartSecurity
控制器的部分server.xml
文件: server.xml
文件中remoteFileAccess
中指定的位置浏览到helloworldsample-1.0.0.tgz
应用程序。 “应用程序目录”和“服务器软件包文件”的“部署参数”信息将自动填写。 如果需要,您可以手动更改“群集名称”和“服务器名称”字段。 在“您的部署完成”屏幕上,单击“ 查看成功部署的服务器”,以在浏览器的新选项卡上查看已部署的成员。
以下屏幕截图显示了WebSphere Liberty集合体中已部署的node.js-server1
服务器:
# wlpn-server list
The following servers are defined relative to the user directory /root/wlpn
nodejs-server1
wlpn-server
命令或WebSphere Liberty管理中心启动Node.js服务器。
# wlpn-server start nodejs-server1
/root/wlpn/nodejs-server1/log/server.log
文件,检查Node.js成员日志。 join.json
文件publishSwagger
标志设置为true
。 部署Node.js服务器后,将在/root/wlpn/nodejs-server1
目录中创建join.json
文件。 该文件应类似于以下示例: {
"hostName": "aussvt101.rtp.raleigh.ibm.com",
"userDir": "/root/wlpn",
"serverName": "nodejs-server1",
"keystorePassword": "{xor}Lz4sLCgwLTs=",
"controllerList": [
"https://aussvt108.rtp.raleigh.ibm.com:9445"
],
"clusterName": "nodejs-cluster1",
"appPort": "9091",
"adminPort": "9454",
"publishSwagger" : "true"
}
本节演示了如何使用notes
环回应用程序在Docker映像中创建Node.js服务器并将其部署到Liberty集合。
# docker run hello-world
您应该看到以下消息:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 48b5124b2768 6 weeks ago 1.84 kB
# docker pull node:4.7.3
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node 4.7.3 66a83b6db17d 2 weeks ago 653 MB
hello-world latest 48b5124b2768 6 weeks ago 1.84 kB
/opt/Nodejs_Docker
。 然后将以下文件放在目录中:在步骤3中在Node.js机器上创建的Dockerfile
和notes-1.0.0.tgz
应用程序。将Node.js服务器部署到Liberty集合中,并将joinMember
和removeMember
脚本部署到。 有关WebSphere Liberty文档中的Node.js成员映像 ,请参阅示例Dockerfile 。 /opt/Nodejs_Docker
目录中列出文件,以确保所有必需的文件均可用: # ls /opt/Nodejs_Docker
Dockerfile
removeMember
joinMember
notes-1.0.0.tgz
node:4.7.3
映像构建了Node.js
映像。 它将joinMember
和removeMember
脚本添加到容器中,安装API Connect,并使用notes-1.0.0.tgz
应用程序创建默认服务器。 # Dockerfile to create a Node.js image
#
# This Dockerfile makes the following assumptions:
# - The collectives enabling scripts (joinMember, removeMember) will be placed in
# /opt/ibm/docker in the Docker container
# - Node.js servers are created at /root/wlpn
# - The Node.js server will be "defaultServer" (for example, /root/wlpn/defaultServer)
# - The application to install will already have its dependencies resolved by "npm install"
# - The Docker container will be run using --net=host, so that no ports are explicitly exported in this file
FROM node:4.7.3
#
# Auto-start the Node.js server with the container
#
ENTRYPOINT ["/usr/local/bin/wlpn-server", "run", "defaultServer"]
# Add collectives enabling scripts
#
ADD joinMember /opt/ibm/docker/
RUN chmod +x /opt/ibm/docker/joinMember
ADD removeMember /opt/ibm/docker/
RUN chmod +x /opt/ibm/docker/removeMember
#
# Update the OS and JRE
#
RUN apt-get update
#
# Install APIConnect collective member
#
RUN npm install -g apiconnect-collective-member
#
# Use the code below to install an application for use onto the Docker image
#
COPY notes-1.0.0.tgz /root/wlpn/
RUN wlpn-server unpack defaultServer /root/wlpn/notes-1.0.0.tgz
docker build -t ${imageName} ${Dockerfile location}
。 在/
opt/Nodejs_Docker
目录中运行以下命令以创建nodejsapi153
映像: # docker build -t nodejsapi153 .
.
在命令的结束指定Dockerfile的位置。) nodejsapi153
图像: # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nodejsapi153 latest 7419eda396a8 2 days ago 1.05 GB
node 4.7.3 66a83b6db17d 2 weeks ago 653 MB
hello-world latest 48b5124b2768 6 weeks ago 1.84 kB
nodejsapi153
映像部署到Liberty集合体。
registerHost
,将Docker主机注册到Liberty控制器。 # wlp/bin/collective registerHost dockerHost --host=controllerHost --port=controllerHTTPSPort --user=adminUser --password=adminPassword --rpcUser=osUser --rpcUserPassword=osUserPassword --autoAcceptCertificates
nodejsapi153
。 “集群名称”和“容器名称”字段是自动填写的,但是您可以将其更改为例如nodejsdoc_cluster
和nodejsdoc_container
。 nodejsdoc_container
是成员,如以下屏幕截图所示:
nodejsdoc_container
成员。 Node.js Docker
容器: # docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7a4a954c6792 nodejsapi153 "/usr/local/bin/wl..." 2 days ago Up 24 hours nodejsdoc_container
13fb833cc324 hello-world "/hello" 57 minutes ago Exited (0) 57 minutes ago wonderful_bose
join.json
文件publishSwagger
标志设置为true
,这会将notes
LoopBack应用程序中的API推送到Liberty集合。 join.json
文件在加入nodejsdoc_container
在/root/wlpn/defaultServer
的nodejsdoc_container
内部创建。
join.json
文件从nodejsdoc_container复制到本地计算机: nodejsdoc_container
# docker cp
nodejsdoc_container
:/root/wlpn/defaultServer/join.json
。 join.json
文件以添加"publishSwagger" : "true"
将API推送到集合体,如以下示例所示: {
"hostName": "docker103.rtp.raleigh.ibm.com",
"userDir": "Docker",
"serverName": "nodejsdoc_container",
"keystorePassword": "{xor}Lz4sLCgwLTs=",
"controllerList": [
"https://aussvt108.rtp.raleigh.ibm.com:9445"
],
"clusterName": "nodejsdoc_cluster",
"appPort": "9115",
"adminPort": "9478",
"publishSwagger" : "true"
}
"publishSwagger" : "true"
标志的join.json
文件复制回nodejsdoc_container
。 # docker cp join.json nodejsdoc_container:/root/wlpn/defaultServer/
nodejsdoc_container
无论从管理中心或与构件docker
的多克尔机器上命令。 # docker stop nodejsdoc_container
# docker start nodejsdoc_container
# docker logs
# docker logs --tail=all –f
/var/lib/docker/containers
目录中。 要列出所有Docker容器日志,请运行以下命令: # ls -l /var/lib/docker/containers/*/*-json.log
本节演示如何使用示例Airline Java应用程序在Docker映像中创建Liberty服务器并将其部署到Liberty集合体。
在步骤4中在Docker映像中创建Node.js服务器的同一台计算机上,在Docker映像中创建Liberty。在Docker映像中创建Node.js服务器,并将其部署到Liberty集合中。
webSphere-liberty
映像: # docker pull websphere-liberty:beta
/opt/Liberty_Docker
,将以下文件放入目录: Dockerfile
, airlines.war
, server.xml
, joinMember
和removeMember
脚本。 有关Liberty Network Deployment映像,请参见示例Dockerfile 。 /opt/Liberty_Docker
目录中列出文件: # ls /opt/Liberty_Docker
airlines.war
Dockerfile
joinMember
removeMember
server.xml
websphere-liberty:beta
映像构建Liberty映像。 它将joinMember
和removeMember
脚本添加到容器中,安装所需的Liberty功能,将Liberty server.xml
添加到容器中的defaultServer
,然后将airlines.war
添加到dropins
目录中。 # Dockerfile to create a Liberty Network Deployment image
#
# This Dockerfile assumes:
# - The collective enabling scripts (joinMember, removeMember) will be placed in
# /opt/ibm/docker in the Docker container
# - WebSphere Liberty will be installed at /opt/ibm/wlp
# - The WebSphere Liberty server will be "defaultServer"
# (for example, /opt/ibm/wlp/usr/servers/defaultServer)
# - The Docker container runs using --net=host so that no ports are explicitly
# exported in this file
FROM websphere-liberty:beta
#
# Auto-start the Liberty server with the container
#
ENTRYPOINT ["/opt/ibm/wlp/bin/server", "run", "defaultServer", "--clean"]
#
# Add collective enabling scripts
#
ADD joinMember /opt/ibm/docker/
RUN chmod +x /opt/ibm/docker/joinMember
ADD removeMember /opt/ibm/docker/
RUN chmod +x /opt/ibm/docker/removeMember
#
# Update the operating system
#
RUN apt-get update
#
# Add the additional required features
#
RUN installUtility install --acceptLicense scalingMember-1.0 clusterMember-1.0 collectiveMember-1.0 apiDiscovery-1.0
ADD server.xml /opt/ibm/wlp/usr/servers/defaultServer/
#
# Insert your application file name. This statement copies the application
# onto the Docker image.
#
ADD airlines.war /opt/ibm/wlp/usr/servers/defaultServer/dropins/
server.xml
文件示例具有示例航空公司应用程序所需的功能。 此server.xml
文件中的httpPort
和httpsPort
具有变量${memberHttpPort}
和${memberHttpsPort}
。 在控制器server.xml
文件中定义变量,以避免在Docker容器中部署多个Liberty服务器时发生端口冲突。
localConnector-1.0
apiDiscovery-1.0
jsp-2.3
jsonp-1.0
jaxrs-2.0
/opt/Liberty_Docker
目录中运行以下命令来构建libertybeta-docker
映像: -t libertybeta-docker .
# docker build
-t libertybeta-docker .
(该.
在命令的结束指定Dockerfile的位置。) libertybeta-docker
映像以查看新的libertybeta-docker
映像: # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
libertybeta-docker latest 4d932b4c51b3 40 seconds ago 454 MB
websphere-liberty beta 0e90e2108d31 44 hours ago 402 MB
nodejsapi153 latest 7419eda396a8 2 days ago 1.05 GB
node 4.7.3 66a83b6db17d 2 weeks ago 653 MB
hello-world latest 48b5124b2768 6 weeks ago 1.84 kB
libertybeta-docker
映像部署到Liberty集合体。 如果要部署Docker Hub注册表中的Docker映像,请参阅步骤6。将Docker Hub注册表中的Docker映像部署到Liberty集合。
registerHost
。 如果使用新计算机,则需要在部署之前从控制器计算机运行registerHost
,以将新计算机注册到集合体。 server.xml
文件,然后重新启动控制器。
如果在控制器server.xml
文件中已经配置了collectiveController
,则不要再次添加它。 定义memberHttpPort
和memberHttpsPort
值是为了避免端口冲突,如前所述。
http://controllerHost: httpsPort /adminCenter
登录到管理中心,然后选择Deploy 。 选择部署Liberty Server和Docker Container,然后单击Confirm 。 libertybeta-docker
。 集群名称和容器名称会自动填写,但是您可以更改它们,例如libertybeta-docker_cluster
和libertybeta-docker_container
,如以下屏幕截图所示:
在本节中,您将从Docker Hub获得根证书,将本地Docker映像推送到Docker Hub注册表,然后将映像从注册表部署到Liberty集合。 本节使用在步骤5中创建的libertybeta-docker
映像。您在Docker映像中创建Liberty服务器,并将其部署到Liberty集合体。
要从注册表中部署Docker映像,必须将Liberty控制器配置为有权访问注册表。
GeoTrustGlobalCA.der
。 GeoTrustGlobalCA.der
证书文件复制到控制器计算机。 yes
以信任此证书。 # keytool -import -file certFile -keystore path_to_controller_collectiveTrust.jks -storepass controller_keystore_password -alias any_unique_value
例如: # /Liberty/java/bin/keytool -import -file /tmp/GeoTrustGlobalCA.der -keystore /Liberty/wlp/usr/servers/myController/resources/collective/collectiveTrust.jks -storepass controllerkspasswd -alias dockerhub
CertOwner: CN=GeoTrust Global CA, O=GeoTrust Inc., C=US
Issuer: CN=GeoTrust Global CA, O=GeoTrust Inc., C=US
…………………….....
………………………..
Trust this certificate? [no]: yes
Certificate was added to keystore
libertybeta-docker
本地Docker映像推libertybeta-docker
Docker Hub注册表。
libertybeta-docker
映像ID: # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
libertybeta-docker latest 4d932b4c51b3 2 hours ago 454 MB
libertybeta-docker
映像ID,如以下命令示例所示: tamdocker/libertybeta-docker:demo
docker tag
4d932b4c51b3
tamdocker/libertybeta-docker:demo
,其中tamdocker
是您的Docker Hub帐户名, demo
是一个标签名。
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
libertybeta-docker latest 4d932b4c51b3 2 hours ago 454 MB
tamdocker/libertybeta-docker demo 4d932b4c51b3 2 hours ago 454 MB
# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: tamdocker
Password: xxxxxxxx
Login Succeeded
# docker push tamdocker/libertybeta-docker:demo
The push refers to a repository [docker.io/tamdocker/libertybeta-docker]
77a69c4adc38: Pushed
……….……………
demo: digest: sha256:472209032316b233e8ad8034593fd5b6a64abf57815788fac390e5ca9ca33eb1 size: 4082
server.xml
文件中。 更改值以与您的码头工人信息相匹配:
--clean
选项重新启动控制器。 tamdocker/libertybeta-docker:demo
部署到Liberty集合体。
tamdocker/libertybeta-docker
映像的demo
标签。 demo
,它将自动填写“映像名称”,“群集名称”和“容器名称”字段,如以下屏幕截图所示:
如上一个屏幕截图所示,自由联盟现在有六个成员。 确保所有成员都在运行,因此您可以通过WebSphere Liberty集合浏览器在这些成员上公开应用程序中的所有API。 如果一个应用程序安装在多个成员上,则该应用程序的API仅显示一次。 在本教程中, SocialSphere
应用程序安装在两个Liberty成员上,而Airline应用程序安装在demo-container
和libertybeta-docker_container
成员上。
server.xml
文件中配置了
,则公共API URL为http://
controlerHost
:
httpPort
/myPublicAPI/collective/explorer.
publicURL
,则默认的公共API URL为http://
controlerHost
:
httpPort
/api/collective/explorer
。 http://
controlerHost
:
httpPort
/myPublicAPI/collective/explorer
。 在以下所有公共API的屏幕截图中,蓝色背景横幅上的SVT徽标是自定义横幅。 (默认横幅是黑色背景上的IBM徽标。)
具有“自定义标题”标题的Liberty REST API和可用API描述列表是在步骤1中的swaggerDef.yaml
文件中定义的自定义信息。配置Liberty集合。 它显示所有可用公共API的列表。
hello-world
LoopBack应用程序中的API,如以下屏幕截图所示:
notes
LoopBack应用程序中的API,如以下屏幕截图所示:
https://controllerHost: httpsPort /ibm/api/collective/explorer
。 quickStartSecurity
用户名和密码登录。 在本教程中,您学习了如何将四个运行时环境部署到WebSphere Liberty集合体:Java,Node.js,Docker中的Nodejs和Docker中的Liberty。
您还学习了如何在本地计算机上部署Docker映像,以及如何从Docker Hub注册表中部署Docker映像。
最后,您了解了如何使用WebSphere Liberty在四个运行时环境中公开应用程序中的所有API。
现在,您知道了如何在一个地方使所有来自WebSphere Liberty集合的API都可用,您和其他开发人员可以在其中查看和调用所有应用程序API。 在您自己的环境中尝试它,并使用WebSphere Liberty中的API Discovery 1.0功能。
作者要感谢Arthur De Magalhaes的所有技术支持和评论,并感谢Mei Mei-siang Chang的评论和非常有帮助的评论。
翻译自: https://www.ibm.com/developerworks/library/mw-1704-dinh/1704-dinh.html