2016-08-13 2 views
0

Ich portiert meine Rails App von meinem lokalen Rechner in einen Docker Container und stolperte in ein Problem mit elasticsearch/searchkick. Ich kann es vorübergehend arbeiten lassen, aber ich frage mich, ob es einen besseren Weg gibt. Im Grunde passt der Port für elasticsearch nicht zum Standard localhost: 9200, den searchkick benutzt. Jetzt habe ich "docker inspect" auf dem elasticsearch Container verwendet und die tatsächliche IP bekommen und dann die ENV ['ELASTICSEARCH_URL'] Variable gesetzt, wie es die Searchkick Dokumente sagen und es funktioniert. Das Problem, das ich habe, ist ein Schmerz, wenn ich die Container neu starte/ändere, ändert sich die IP manchmal und ich muss den ganzen Prozess noch einmal durchlaufen. Hier ist mein docker-compose.yml:Docker Rails App mit searchkick/elasticsearch

version: '2' 
services: 
    web: 
    build: . 
    command: rails server -p 3000 -b '0.0.0.0' 
    volumes: 
     - .:/living-recipe 
    ports: 
     - '3000:3000' 
    env_file: 
     - .env 
    depends_on: 
     - postgres 
     - elasticsearch 

    postgres: 
    image: postgres 

    elasticsearch: 
    image: elasticsearch 

Antwort

3

Verwendung elasticsearch:9200. docker compose stellt den Container über seinen Namen zur Verfügung.

+0

Arbeitete super danke – DRing

+0

wenn es klappte, sollte man die antwort annehmen, oder? – phoet

+0

Sorry klickte auf die obere Stimme anstelle der Antwort akzeptieren – DRing

0

Sie möchten nicht versuchen, die IP-Adresse für elasticsearch manuell zuzuordnen, da dies sich ändern wird.

Austauschen depends_on für links. Dies erzeugt die gleiche Abhängigkeit, erlaubt aber auch das Erreichen der Container über den Servicenamen.

Container für den verknüpften Dienst sind unter einem Hostnamen erreichbar, der dem Alias ​​oder dem Dienstnamen entspricht, wenn kein Alias ​​angegeben wurde.

Links geben auch die Abhängigkeit zwischen Diensten auf dieselbe Weise an wie depends_on, so dass sie die Reihenfolge des Dienststarts festlegen.

Docker Compose File Reference - Links

Dann App in Ihre Schienen, wo Sie ENV['ELASTICSEARCH_URL'] sind einstellen, verwenden Sie stattdessen elasticsearch.

Verwandte Themen