小编Phi*_*kie的帖子

Docker容器启动后如何自动运行脚本

我正在使用 Search Guard 插件来保护由多个节点组成的弹性搜索集群。这是我的 Dockerfile:

#!/bin/sh
FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.3

USER root

# Install search guard
RUN bin/elasticsearch-plugin install --batch com.floragunn:search-guard-5:5.6.3-16 \
    && chmod +x \
        plugins/search-guard-5/tools/hash.sh \
        plugins/search-guard-5/tools/sgadmin.sh \
        bin/init_sg.sh \
    && chown -R elasticsearch:elasticsearch /usr/share/elasticsearch

USER elasticsearch
Run Code Online (Sandbox Code Playgroud)

初始化 SearchGuard(创建内部用户并分配角色)。我需要init_sg.sh在容器启动后运行脚本。问题在于:除非elasticsearch 正在运行,否则脚本不会初始化任何安全索引。

脚本的内容是:

sleep 10
plugins/search-guard-5/tools/sgadmin.sh -cd config/ -ts config/truststore.jks -ks config/kirk-keystore.jks -nhnv -icl
Run Code Online (Sandbox Code Playgroud)

现在,我只是在容器启动后手动运行脚本,但由于我是在 Kubernetes 上运行它的。Pod 可能会因某种原因被杀死或失败并自动重新创建。在这种情况下,插件必须在容器启动后自动初始化!

那么如何实现这一点呢?任何帮助或提示将不胜感激。

elasticsearch docker elasticsearch-plugin kubernetes dockerfile

17
推荐指数
4
解决办法
5万
查看次数

Graphx:是否可以在不接收消息的情况下在每个顶点上执行程序?

当我尝试使用Scala在Graphx中实现一个算法时,我没有发现可以激活下一个解决方案中的所有顶点.如何向所有图形顶点发送消息?在我的算法中,有一些超级步骤应该由所有顶点执行(无论它们是否接收到消息,因为即使没有接收消息也是应该在下一次迭代中处理的事件).

我在这里给出了在pregel的逻辑中实现的SSSP算法的官方代码,你可以看到只有接收消息的顶点将在下一次迭代中执行它们的程序但是对于我的情况,我希望pregel函数迭代运行,即每个超级步骤顶点执行他们的程序,他们可以投票停止,如果需要!这个例子中的推理看起来并不像Pregel的纸质逻辑.请问有关如何实现Pregel真实逻辑的任何想法?

val graph: Graph[Long, Double] =
  GraphGenerators.logNormalGraph(sc, numVertices = 100).mapEdges(e => e.attr.toDouble)
val sourceId: VertexId = 42 // The ultimate source
// Initialize the graph such that all vertices except the root have distance infinity.
val initialGraph = graph.mapVertices((id, _) =>
    if (id == sourceId) 0.0 else Double.PositiveInfinity)
val sssp = initialGraph.pregel(Double.PositiveInfinity)(
  (id, dist, newDist) => math.min(dist, newDist), // Vertex Program
  triplet => {  // Send Message
    if (triplet.srcAttr + triplet.attr < triplet.dstAttr) {
      Iterator((triplet.dstId, triplet.srcAttr + triplet.attr))
    } …
Run Code Online (Sandbox Code Playgroud)

scala graph-theory apache-spark spark-graphx spark-shell

7
推荐指数
1
解决办法
310
查看次数

如何重用现有的持久卷声明

我已经删除了我的 elasticsearch 集群,但是现在在我部署了一个新集群之后,我需要访问存储在 3 个持久卷 PV 上的旧数据,如下所述:

NAME                       STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
storage-es-data-0          Bound     pvc-19429b0b-ba42-11e7-979d-42010a840ff7   12Gi       RWO            standard       10d
storage-es-data-1          Bound     pvc-36505962-ba42-11e7-979d-42010a840ff7   12Gi       RWO            standard       10d
storage-es-data-2          Bound     pvc-422da328-ba42-11e7-979d-42010a840ff7   12Gi       RWO            standard       10d
Run Code Online (Sandbox Code Playgroud)

这是旧PV索赔的描述:

NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                              STORAGECLASS   REASON    AGE
pvc-19429b0b-ba42-11e7-979d-42010a840ff7   12Gi       RWO            Delete           Bound     default/storage-es-data-0          standard                 10d
pvc-36505962-ba42-11e7-979d-42010a840ff7   12Gi       RWO            Delete           Bound     default/storage-es-data-1          standard                 10d
pvc-422da328-ba42-11e7-979d-42010a840ff7   12Gi       RWO            Delete           Bound     default/storage-es-data-2          standard                 10d
Run Code Online (Sandbox Code Playgroud)

我的新部署描述如下:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: es-data …
Run Code Online (Sandbox Code Playgroud)

kubernetes persistent-volumes persistent-volume-claims

6
推荐指数
1
解决办法
8127
查看次数

使用Android中的Google Maps API检查点是否为多边形

我在Android上使用Google Maps API来制作拼图.此链接包含我用于绘制非洲国家的数据:世界国家坐标.

当用户点击地图时,会进行测试以检查它是否在正确的国家/地区.

  • 指向正确的国家:正确的国家是绿色的

  • 指向另一个已知国家:当前国家的颜色为红色

下面的代码迭代非洲国家/地区列表(一个国家可能包含多个多边形),以找到包含点击点的那个,并将其与正确的国家进行比较.

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng latLng) {

        if(isPointInPolygon(latLng,answerPolygon)) {
            // right answer
            Toast.makeText(MapsActivity.this, "point inside the right polygon", Toast.LENGTH_SHORT).show();
            Polygon p = mMap.addPolygon(new PolygonOptions().addAll(answerPolygon));
            p.setStrokeWidth(p.getStrokeWidth()/5);
            p.setFillColor(0x7F00FF00);
        }
        else {
            // wrong answer
            // search current polygon
            // color current polygon in red
            if (colorPolygonInRed(latLng)){
                Polygon p = mMap.addPolygon(new PolygonOptions().addAll(answerPolygon));
                p.setStrokeWidth(p.getStrokeWidth()/5);
                p.setFillColor(0x7F00FF00);
                Toast.makeText(MapsActivity.this, "point in known polygons", Toast.LENGTH_SHORT).show();
            }
            else {
                Toast.makeText(MapsActivity.this, "point in unknown polygons", Toast.LENGTH_SHORT).show();
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

android google-maps point-in-polygon google-maps-api-3

4
推荐指数
1
解决办法
4095
查看次数

如何为折线图设置chart.js网格颜色

我想使用选项字段更改折线图的网格颜色,但我不知道从哪里开始.我首先尝试使用渐变来更改画布背景颜色,但结果并不好.

canvas{
background:linear-gradient(top, #ea1a07 0%, #f4b841 75%,#f2dd43 100%);
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到我想要的东西,因为正如你在上面的图片中看到的那样,不仅网格被着色而且x值,y标签和图表图例也被着色.

我用这个css代码得到的结果的图片

我想要的例子

我的chart.js选项是

options = {
        scales: {
          xAxes: [{
            gridLines: {
              color: 'rgba(171,171,171,1)',
              lineWidth: 1
            }
          }],
          yAxes: [{
            ticks: {
              beginAtZero: true,
              max: 100,
              min: 0,
              stepSize: 10
            },
            gridLines: {
              color: 'rgba(171,171,171,1)',
              lineWidth: 0.5
            }
          }]
        },
        responsive: true
      };
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法将网格的背景设置为3种不同的颜色(渐变与否)?注意:我正在使用带有角度2的图表.(ng2-charts)

chart.js css-gradients ng2-charts

3
推荐指数
1
解决办法
1万
查看次数