Przygotowuję prosty obraz: taki, który zawiera Riak (baza danych NoSQL). Obrazek uruchamia usługę Riak pod numerem riak start
jako CMD. Teraz, jeśli uruchomię go jako demona z docker run -d quintenk/riak-dev
, rozpocznie się proces Riak (widzę to w dziennikach). Jednak zamyka się automatycznie po kilku sekundach. Jeśli uruchomię go przy użyciu docker run -i -t quintenk/riak-dev /bin/bash
, proces riak nie zostanie rozpoczęty (UPDATE: zobacz odpowiedzi na wyjaśnienie). W rzeczywistości żadna usługa nie działa. Mogę uruchomić go ręcznie za pomocą terminala, ale chciałbym, aby Riak uruchomił się automatycznie. Myślę, że to zachowanie wystąpiłoby również w innych serwisach, Riak jest tylko przykładem.Automatyczne uruchamianie usługi w kontenerze dokowania
Tak, uruchomienie/ponowne uruchomienie kontenera powinno automatycznie uruchomić Riak. Jakie jest właściwe podejście do ustawiania tego?
Dla odniesienia, tutaj jest Dockerfile z których można utworzyć obraz (aktualizacja: zmieniać za pomocą wybranego odpowiedź):
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y openssh-server curl
RUN curl http://apt.basho.com/gpg/basho.apt.key | apt-key add -
RUN bash -c "echo deb http://apt.basho.com precise main > /etc/apt/sources.list.d/basho.list"
RUN apt-get update
RUN apt-get -y install riak
RUN perl -p -i -e 's/(?<=\{http,\s\[\s\{")127\.0\.0\.1/0.0.0.0/g' /etc/riak/app.config
EXPOSE 8098
CMD /bin/riak start && tail -F /var/log/riak/erlang.log.1
Edycja: -F zmieniona -F CMD zgodne do sesm jego uwaga
MY OWN ODPOWIEDŹ
Po pracy z Döcker przez jakiś czas nabrałem nawyku używania superwordurzysty, aby dostroić moje procesy. Jeśli chcesz podać przykładowy kod, sprawdź numer https://github.com/Krijger/docker-cookbooks. Używam obrazu mojego przełożonego jako bazy dla wszystkich moich innych obrazów. Napisałem na blogu używając opiekuna here.
Przy okazji. Jestem teraz (dla celów programistycznych), używając kontenera, uruchamiając go, dołączając do niego, a następnie uruchamiając wiersz poleceń Riak. – qkrijger