运行dockerfile时,rabbitmq设置不会保留

我有任何我想要的申请:

>运行rabbitmq-server
>设置一些队列和交换(我有一个setuprabbit.py脚本)
>然后运行一些脚本(在主管中完成)……但在此之前我必须设置兔子

我的Dockerfile看起来像这样:

RUN cd /var && wget -q http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.2/rabbitmq-server-generic-unix-2.8.2.tar.gz

RUN cd /var && tar -xzvf rabbitmq-server-generic-unix-2.8.2.tar.gz && rm rabbitmq-server-generic-unix-2.8.2.tar.gz
ENV PATH /var/rabbitmq_server-2.8.2/sbin/:$PATH

RUN rabbitmq-plugins enable rabbitmq_management && rabbitmq-server -detached && sleep 5 &&  cd /tmp/ && rabbitmqctl start_app && python buzz/scripts/setuprabbit.py
#RUN rabbitmq-server -detached && sleep 5 &&  cd /tmp/ && rabbitmqctl start_app && python buzz/scripts/setuprabbit.py

CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]

当我进行构建时,它在这里失败了(sudo docker build.)……它通过但我可以看到,当主管运行脚本时… rabbitmq不再运行(兔节点已关闭).

我如何坚持兔子设置e.t.c?

这是我的完整Dockerfile:

FROM ubuntu:precise
MAINTAINER njain
#VOLUME ["home/njain/office/buzz"]
ADD .  /tmp/
# DOCKER-VERSION 0.3.4
# Docker basics
RUN apt-get -y update

# EDITORS
#RUN apt-get install -y -q vim

## PYTHON
RUN apt-get install -y -q python-software-properties
RUN apt-get install -y -q python
RUN apt-get install -y -q python-setuptools
RUN apt-get install -y -q python-virtualenv
RUN apt-get install -y -q python-dev
RUN apt-get install -y -q python-distribute
#RUN apt-get install -y -q build-essential
RUN apt-get install -y -q python-pip
RUN pip --no-input  install --upgrade pip

# LIBS
RUN apt-get install -y -q libjpeg8-dev
RUN apt-get install -y -q zlib1g-dev
RUN apt-get install -y -q libfreetype6-dev
RUN apt-get install -y -q liblcms1-dev
RUN apt-get install -y -q libwebp-dev
RUN apt-get install -y -q libtiff-dev
RUN apt-get install -y -q libffi-dev
# TOOLS
RUN apt-get install -y -q curl
RUN apt-get install -y -q git
RUN apt-get install -y -q vim

#RABBIT
RUN apt-get install -y -q rabbitmq-server
#RUN /usr/sbin/rabbitmq-plugins enable rabbitmq_management

# Install supervisor
RUN apt-get install -y supervisor
RUN mkdir -p /var/run/sshd
RUN mkdir -p /var/log/supervisor
RUN mkdir -p /etc/supervisor/conf.d
RUN mkdir -p /var/run/sshd /var/log/supervisor
COPY supervisord.conf /etc/supervisor/supervisord.conf

RUN pip --no-input install virtualenv


#RUN cd /tmp/
RUN  cd /tmp/ && virtualenv buzzenv &&   python setup.py install

#RUN  rabbitmq-server start &
#RUN  python /tmp/buzz/scripts/setuprabbit.py

# Install RabbitMQ.
RUN apt-get update
RUN apt-get -f install
RUN apt-get install wget
#RUN \
#wget -qO - http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | apt-key add - && \
#echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list && \
#apt-get update && \
#DEBIAN_FRONTEND=noninteractive apt-get install -y rabbitmq-server && \
#rm -rf /var/lib/apt/lists/* && \
#rabbitmq-plugins enable rabbitmq_management && \
#echo "[{rabbit, [{loopback_users, []}]}]." > /etc/rabbitmq/rabbitmq.config

# Define RabbitMQ variables.
#RUN mkdir -p /data/mnesia
#RUN chown -R rabbitmq:rabbitmq /data
#ENV RABBITMQ_LOG_BASE /var/log/rabbitmq
#ENV RABBITMQ_MNESIA_BASE /data/mnesia
#EXPOSE 5672
#EXPOSE 15672
#RUN echo "NODENAME=rabbit@localhost" > /var/rabbitmq-env.conf


RUN cd /var && wget -q http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.2/rabbitmq-server-generic-unix-2.8.2.tar.gz

RUN cd /var && tar -xzvf rabbitmq-server-generic-unix-2.8.2.tar.gz && rm rabbitmq-server-generic-unix-2.8.2.tar.gz
ENV PATH /var/rabbitmq_server-2.8.2/sbin/:$PATH

RUN rabbitmq-plugins enable rabbitmq_management && rabbitmq-server -detached && sleep 5 &&  cd /tmp/ && rabbitmqctl start_app && python buzz/scripts/setuprabbit.py
#RUN rabbitmq-server -detached && sleep 5 &&  cd /tmp/ && rabbitmqctl start_app && python buzz/scripts/setuprabbit.py

CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]

最佳答案 因为docker的工作方式……我跑完之后

RUN rabbitmq-plugins enable rabbitmq_management && \
    rabbitmq-server -detached && \
    sleep 5 && \
    cd /tmp/ && \
    rabbitmqctl start_app && \
    python buzz/scripts/setuprabbit.py

它停止了兔子服务器.

为了确保状态得到保存,我需要

RUN rabbitmq-plugins enable rabbitmq_management && \
    rabbitmq-server -detached && \
    sleep 5 && \
    cd /tmp/ && \
    rabbitmqctl start_app && \
    python buzz/scripts/setuprabbit.py && \
    rabbitmqctl stop_app

然后在下一步中再次启动rabbitmq-server.

点赞