Tôi đang thiết lập một hình ảnh đơn giản: một dịch vụ giữ Riak (một cơ sở dữ liệu NoSQL). Hình ảnh bắt đầu dịch vụ Riak với riak start
làm CMD. Bây giờ, nếu tôi chạy nó như một daemon với docker run -d quintenk/riak-dev
, nó bắt đầu quá trình Riak (tôi có thể thấy rằng trong nhật ký). Tuy nhiên, nó sẽ tự động đóng sau vài giây. Nếu tôi chạy nó bằng cách sử dụng docker run -i -t quintenk/riak-dev /bin/bash
quá trình riak không được bắt đầu (UPDATE: xem câu trả lời cho một lời giải thích cho điều này). Trên thực tế, không có dịch vụ nào đang chạy. Tôi có thể bắt đầu nó bằng tay bằng cách sử dụng thiết bị đầu cuối, nhưng tôi muốn Riak bắt đầu tự động. Tôi hình dung hành vi này cũng sẽ xảy ra đối với các dịch vụ khác, Riak chỉ là một ví dụ.Chạy một dịch vụ tự động trong ngăn chứa docker
Vì vậy, chạy/khởi động lại vùng chứa sẽ tự động khởi động Riak. Cách tiếp cận chính xác của thiết lập này là gì?
Để tham khảo, đây là Dockerfile mà hình ảnh có thể được tạo ra (UPDATE: thay đổi bằng cách sử dụng câu trả lời lựa chọn):
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
EDIT: -f đổi thành -f trong CMD theo để sesm nhận xét của ông
MY ĐÁP rIÊNG
Sau khi làm việc với Docker trong một thời gian tôi chọn thói quen sử dụng người giám sát để điều chỉnh quy trình của tôi. Nếu bạn muốn mã ví dụ cho điều đó, hãy kiểm tra https://github.com/Krijger/docker-cookbooks. Tôi sử dụng hình ảnh giám sát của tôi làm cơ sở cho tất cả các hình ảnh khác của tôi. Tôi đã viết blog bằng cách sử dụng người giám sát here.
Nhân tiện. Tôi bây giờ (cho mục đích phát triển) bằng cách sử dụng container bằng cách bắt đầu nó, gắn vào nó, và sau đó bắt đầu dòng lệnh Riak. – qkrijger