Docker rails弹性搜索

时间:2018-02-12 11:01:55

标签: ruby-on-rails docker elasticsearch docker-compose dockerfile

我正在尝试在我的rails网络应用中实施弹性搜索。我正在使用码头工具。我使用this link作为参考。我的docker-compose.yml文件是:

 mysql:
  image: mysql:5.6.34
  ports:
    - "3002:3002"
  volumes_from:
    - dbdata
  environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=dev

dbdata:
  image: tianon/true
  volumes:
    - /var/lib/mysql

web:
  build: .
  environment:
    RAILS_ENV: development
  ports:
    - '3000:3000'
  volumes_from:
    - appdata
  links:
    - "mysql"
    - elasticsearch

appdata:
  image: tianon/true
  volumes:
    - ".:/workspace"

elasticsearch:
  image: elasticsearch
  ports:
    - "9200:9200"
  ulimits:
    memlock:
      soft: -1
      hard: -1
    nofile:
      soft: 65536
      hard: 65536
  mem_limit: 1g
  cap_add:
    - IPC_LOCK
  volumes:
    - /usr/share/elasticsearch/data

当我尝试按照上面给出的链接运行Student.__elasticsearch__.create_index! force:true时。我收到以下错误:enter image description here

1 个答案:

答案 0 :(得分:0)

您需要为ELASTICSEARCH_URL设置 ENV 以更正值

ELASTICSEARCH_URL="http://<ip-of-your-docker-container>:9200"

由于您已关联网络,因此可以提供以下内容

ELASTICSEARCH_URL="http://elasticsearch:9200"
  

链接允许您定义额外的别名,通过该别名可以从其他服务访问服务。任何服务都可以通过该服务的名称访问任何其他服务

如果未设置 ENV ,您的rails应用将使用http://localhost:9200