1

定義済みのユーザーで RabbitMQ を実行する Dockerfile を作成しようとしていますが、Dockerfile のビルド手順中に設定が失われます。

これは私の Dockerfile です:

FROM rabbitmq:management
# Set node name to try to avoid settings being lost during intermediate containers creation
RUN echo "NODENAME=rabbit@localhost" > /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

Windowsマシンでboot2dockerを使用してコンテナを実行していますが、関係がないようです。

出力は、Dockerfile の各ステップの後、中間コンテナーが作成されると、設定が失われることを示しています。

誰もそれを修正する方法を知っていますか? 私は今、2日間それに立ち往生しています。

4

1 に答える 1

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 コンテナーを必要に応じて構成しています。

于 2015-07-08T17:34:10.193 に答える