如何在ddev中使用Elasticsearch附加容器/服务?

时间:2019-02-07 14:39:26

标签: ddev

如何设置服务/容器以为ddev提供elasticsearch?我已经尝试过https://ddev.readthedocs.io/en/latest/users/extend/additional-services/的一些实验,但是没有足够的docker-compose知识来为Elasticsearch做一个实验。

2 个答案:

答案 0 :(得分:0)

@thursdaybw在https://github.com/drud/ddev/pull/1320中提供了此食谱,但它从未获得关注,也没有人评论它,因此它被移到这里以在社区中渗透和孵化。如果您使用它,请提供您的建议。

有关设置附加服务的基本信息(以及查看的示例),位于https://ddev.readthedocs.io/en/latest/users/extend/additional-services/

version: '3.6'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.1
    container_name: ddev-${DDEV_SITENAME}-elasticsearch
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - VIRTUAL_HOST=$DDEV_HOSTNAME # This defines the host name the service should be accessible from. This will be sitename.ddev.local
      - HTTP_EXPOSE=9200
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200
    labels:
    # These labels ensure this service is discoverable by ddev
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT
      com.ddev.app-url: $DDEV_URL

volumes:
  esdata1:
    driver: local

答案 1 :(得分:0)

对于启动单个节点,给定的示例并没有帮助我。在没有提供其他错误消息的情况下,容器再次停止。使用以下配置,我只能启动一个ES节点,而不能作为群集启动(如上一个答案中所述):

version: '3.6'
services:
  elasticsearch:
    container_name: ddev-${DDEV_SITENAME}-elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.1
    environment:
      - node.name=${DDEV_SITENAME}-es01
      - discovery.type=single-node
      - cluster.name=docker-${DDEV_SITENAME}-es-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.platform: ddev
      com.ddev.app-type: elasticsearch
      com.ddev.approot: $DDEV_APPROOT
  web:
    links:
      - elasticsearch:elasticsearch

volumes:
  esdata01:
    driver: local
    name: "${DDEV_SITENAME}-es"

另外,使用此配置,您可以从另一个容器中使用主机名elasticsearch直接访问该节点。