†でおきしブログ†

ウナギ食べたいヽ(•̀ω•́ )ゝ✧

【Rails】docker で searchkickとelasticsearchの組み合わせが動かなすぎて10時間ぐらいハマった

☆パーフェクトRuby on Railsのお勉強ネタです

8-2-2 のsearchkickのとこですね。

☆docker-compose.yml

version: '3.2'

services:
  elasticsearch:
    build:
      context: .
      dockerfile: ./docker/local/DockerFile_elasticsearch
    ports:
      - "9300:9200"
    privileged: true
    environment:
      - discovery.type=single-node
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1    
  perfect_rails_app:
    build:
      context: .
      dockerfile: ./docker/local/DockerFile
    command: bundle exec rails s -p 3000 -b '0.0.0.0' --early-hints
    tty: true
    stdin_open: true
    links:
      - elasticsearch    
    environment:
      RAILS_ENV: development
      ELASTICSEARCH_URL: http://elasticsearch
    volumes:
      - "./app/awesome_events:/app" #共有フォルダの設定
    ports:
      - "3003:3000"

☆ポイント

★elasticsearchの設定

elasticsearchの7系はenvironmentとulimitsが重要との情報を入手したのでコピペ。
qiita.com
感謝!!

Rails側(perfect_rails_app)の設定

searchkickからアクセスするために環境変数を設定しています。

ELASTICSEARCH_URL: http://elasticsearch

elasticsearchはサービス名ですね。dockerの世界ではこれでホスト名解決されるんですが、URLにしているのがポイントですね。