2017-12-08 2 views
0

Ich versuche, einen Docker Behälter für Elasticsearch 1.7 laufen Unten ist mein Dockerfile.

FROM ubuntu:16.04 

RUN apt-get update \ 
    && apt-get install -y curl zip unzip vim software-properties-common \ 
    && echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections \ 
    && add-apt-repository -y ppa:webupd8team/java \ 
    && apt-get update \ 
    && apt-get install -y oracle-java8-installer \ 
    && wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add - \ 
    && echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list \ 
    && apt-get update \ 
    && apt-get install -y elasticsearch \ 
    && echo "network.host: localhost" >> /etc/elasticsearch/elasticsearch.yml 


EXPOSE 9200 

CMD ["elasticsearch"] 

Docker bauen funktioniert gut, aber die Docker Lauf Befehl. wird mir diesen Fehler geben: Fehlerreaktion von Daemon: OCI-Laufzeitfehler: container_linux.go: 265: Start verursachte Container-Prozess "exec: \" Elasticsearch \ ": ausführbare Datei in $ PATH nicht gefunden"

ich bin mit Mac und Docker-Version ist: 17.09.0-ce

Antwort

1

Dies ist ein paar Tage alt - haben Sie es gelöst? Die Fehlermeldung sagt genau, was das Problem ist (obwohl ich nicht sicher bin, warum es ein Problem ist).

Ich habe einen Docker basierend darauf gebaut. Hier ist die $PATH:

[email protected]:/# echo $PATH 
> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

Hier ist, wo Elasticsearch installiert wird (scheinbar):

[email protected]:/# find/-name 'elasticsearch' -type f 
> /etc/default/elasticsearch 
> /etc/init.d/elasticsearch 
> /usr/share/lintian/overrides/elasticsearch 
> /usr/share/elasticsearch/bin/elasticsearch 

auf dieser Grundlage sieht es aus wie Elasticsearch bei /usr/share/elasticsearch/bin/elasticsearch installiert wird. Ich denke, die einfachste Lösung, um die CMD zu diesem vollständigen Pfad zu setzen:

CMD ["/usr/share/elasticsearch/bin/elasticsearch"] 

aber sagen, dass Elasticsearch eine Menge anderer Daten hat es braucht - nur diesen Befehl ausgeführt scheint nicht zu funktionieren. Basierend auf how complex their dockerfile ist, und basierend auf dem, was ich in der /etc/init.d/elasticsearch (wie Elasticsearch würde laufen, wenn auf einem Server statt in einem Container installiert) laufen würde, werde ich empfehlen, ihren offiziellen Container zu verwenden, anstatt zu versuchen Bau dein eigenes.

Verwandte Themen