我有任何我想要的应用程序:

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

  • 我的 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 不再运行(rabbit 节点已关闭)。

    我如何坚持兔子设置等?

    这是我的完整 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

    关于运行 dockerfile 时,rabbitmq 设置不会持续存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26431769/

    10-12 00:36
    查看更多