在docker容器中更改后WSO2丢失API

时间:2016-09-07 19:38:00

标签: docker wso2 wso2-am api-manager persistent-volumes

我在使用WSO2 API Manager 2.0.0时遇到了另一个问题:我使用三个容器(一个用于APIM,一个用于Google Analytics,一个用于MySQL)在docker中安装它,我用自定义版本替换了一些配置文件(例如DB,服务器名称,网关设置......)。 APIM和Analytics都配置为在MySQL容器中保存数据,我能够看到数据库中的更改。

问题是,在重建容器之后,我无法在发布者和商店中找到我的API。数据库中的更改仍然存在,我可以看到所有API的统计信息,如果我尝试使用相同的名称或上下文创建新的API,则会收到错误,但是在新的构建之后商店总是空的。

我还尝试将/ repository / deployment / server / synapse-config / default和/ repository / tenants /放在两个卷中,我可以看到在/.../default/api/中为我创建的文件API,但我无法弄清楚这个问题。 我应该保留指南中未提及的其他目录吗?

如果可能的话,我不想把整个APIM和Analytics家园放在一起。

2 个答案:

答案 0 :(得分:2)

首先,检查工件是否位于资源浏览器中。

Resources Browser

如果您可以找到API相关文件,则问题与索引有关。 执行以下操作以重新索引注册表中的工件:

  1. 重命名<lastAccessTimeLocation>文件中的<APIM_2.0.0_HOME>/repository/conf/registry.xml元素。如果使用群集/分布式API Manager设置,请更改API Publisher节点中的文件。例如,将/_system/local/repository/components/org.wso2.carbon.registry/indexing/lastaccesstime注册表路径更改为/_system/local/repository/components/org.wso2.carbon.registry/indexing/lastaccesstime_1
  2. 关闭API Manager,备份并删除<APIM_2.0.0_HOME>/solr目录。
  3. 最后启动API Manager。

答案 1 :(得分:1)

Api信息驻留在数据库和文件系统中。(/ repository / deployment / server / synapse-config / default / api)注册表工件可能未正确编入索引。你能试试吗?

  1. 删除太阳能目录。
  2. 打开registry.xml并更改以下行,如下所示。 &LT; lastAccessTimeLocation&GT; / _系统/本地/存储库/组件/ org.wso2.carbon.registry /索引/的LastAccessTime-1
  3. 现在重启服务器。服务器将再次重新索引所有文件。
  4. 还要确保正确配置了数据库。特别是注册表安装相关配置。