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

我正在使用 boot2docker 在 Windows 机器上运行容器,但它似乎并不相关。

输出显示,在每个 Dockerfile 步骤之后,当创建中间容器时,设置都会丢失。

有谁知道如何修理它?我已经坚持了两天了。

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 回答