2015-07-08 3 views
1

Я пытаюсь создать файл Docker, который запускает RabbitMQ с предопределенным пользователем, но во время шагов сборки Dockerfile настройки теряются.Как предотвратить утери RabbitMQ на промежуточных этапах файла Docker?

Это мой Dockerfile:

FROM rabbitmq:management 
# Set node name to try to avoid settings being lost during intermediate containers creation 
RUN echo "[email protected]" > /etc/rabbitmq/rabbitmq-env.conf 
# Start server in intermediate container and configure user 
RUN rabbitmq-server -detached \ 
    && sleep 5 \ 
    && rabbitmqctl add_user test test \ 
    && rabbitmqctl set_user_tags test management \ 
    && rabbitmqctl set_permissions -p/test ".*" ".*" ".*" \ 
    && rabbitmqctl list_users 
# Start server in intermediate container just to show that user configuration is lost 
RUN rabbitmq-server -detached \ 
    && sleep 5 \ 
    && rabbitmqctl list_users 
# Run server in final container as main/daemon process 
CMD rabbitmq-server

команды я использую для создания образа и запустить контейнер являются:

docker build -t rabbitmq:test . 
docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:test

Я использую boot2docker для запуска контейнеров, в Windows-машина, но она не кажется актуальной.

Выход показывает, что после каждого этапа Dockerfile, когда создается промежуточный контейнер, настройки теряются.

Кто-нибудь знает, как это исправить? Я застрял на нем два дня.

ответ

1

Попробовав несколько вариантов, я получил эту работу, используя следующий Dockerfile:

FROM rabbitmq:management 
CMD rabbitmq-server -detached ; \ 
    sleep 3 ; \ 
    rabbitmqctl add_user test test ; \ 
    rabbitmqctl set_user_tags test management ; \ 
    rabbitmqctl set_permissions -p/test ".*" ".*" ".*" ; \ 
    rabbitmqctl stop ; \ 
    sleep 3 ; \ 
    rabbitmq-server

Это не решает исходную задачу, но, по крайней мере, у меня есть RabbitMQ контейнер сконфигурировано как мне нужно.