首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在docker-compose文件中提供rabbitmq.conf会给出"sed:无法重命名/etc/rabbitmq/sedMaHqMa:设备或资源忙“

在docker-compose文件中提供rabbitmq.conf会给出"sed:无法重命名/etc/rabbitmq/sedMaHqMa:设备或资源忙“
EN

Stack Overflow用户
提问于 2018-01-28 16:27:32
回答 3查看 5.1K关注 0票数 17

我的docker-compose看起来像这样:

代码语言:javascript
复制
version: '3.2'
services:
  mq:
    hostname: ${HOST_NAME}
    ports:
      - "5671:5671"
      - "5672:5672"
      - "15671:15671"
      - "15672:15672"
    environment:
      - RABBITMQ_DEFAULT_USER=${USER}
      - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
    volumes:
      - ${CACERT_PEM_FILE}:/etc/rabbitmq/certs/cacert.pem
      - ${CERT_PEM_FILE}:/etc/rabbitmq/certs/cert.pem
      - ${KEY_PEM_FILE}:/etc/rabbitmq/certs/key.pem
      - ${MQ_CONFIG_FILE}:/etc/rabbitmq/rabbitmq.conf
    image: rabbitmq:3-management

我的rabbitmq.conf看起来像这样:

代码语言:javascript
复制
listeners.tcp.default = 5672
listeners.ssl.default = 5671

ssl_options.cacertfile = /etc/rabbitmq/certs/cacert.pem
ssl_options.certfile = /etc/rabbitmq/certs/cert.pem
ssl_options.keyfile = /etc/rabbitmq/certs/key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = false

ssl_options.versions.1 = tlsv1.2
ssl_options.versions.2 = tlsv1.1

然而,当我尝试执行docker-compose up时,我得到了以下错误:

cannot rename /etc/rabbitmq/sedMaHqMa: Device or resource busy

我尝试使用旧格式的配置文件(rabbitmq.config),它没有给我这个错误,但是我需要使用新的格式,因为我需要在启动时通过环境提供的密码。变量。

编辑2018年2月20日

这是Rabbitmq docker镜像中当前可用的环境变量的list,它们足以为AMQP和HTTP (管理应用编程接口和网络控制台)设置TLS。

复制它们,以防链接断开:

代码语言:javascript
复制
RABBITMQ_DEFAULT_PASS
RABBITMQ_DEFAULT_USER
RABBITMQ_DEFAULT_VHOST
RABBITMQ_ERLANG_COOKIE
RABBITMQ_HIPE_COMPILE
RABBITMQ_MANAGEMENT_SSL_CACERTFILE
RABBITMQ_MANAGEMENT_SSL_CERTFILE
RABBITMQ_MANAGEMENT_SSL_DEPTH
RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT
RABBITMQ_MANAGEMENT_SSL_KEYFILE
RABBITMQ_MANAGEMENT_SSL_VERIFY
RABBITMQ_SSL_CACERTFILE
RABBITMQ_SSL_CERTFILE
RABBITMQ_SSL_DEPTH
RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT
RABBITMQ_SSL_KEYFILE
RABBITMQ_SSL_VERIFY
RABBITMQ_VM_MEMORY_HIGH_WATERMARK
EN

回答 3

Stack Overflow用户

发布于 2018-01-31 23:34:45

这似乎是当前rabbitmq Dockerfile的一个问题。特定sed命令似乎无法在映射为卷的配置文件上正常工作。但是,既然您可以控制rabbitmq.conf,为什么不在这个文件中包含默认用户和密码呢

代码语言:javascript
复制
default_user = admin
default_pass = YourStrongPasswort

从您的合成文件中删除 RABBITMQ_DEFAULT_USER和RABBITMQ_DEFAULT_PASS。这可能是最快的变通方法。刚刚测试过,对我有效(官方rabbitmq:3.7-management)。

票数 24
EN

Stack Overflow用户

发布于 2019-01-11 22:34:44

最近,我在rabbitmq:3.7.8-management image上遇到了同样的问题。

我能够通过提供advanced.config而不是rabbitmq.conf来解决这个问题。advanced.config使用遗留的Erlang格式,除此之外,它非常适合我。我还提供了RABBITMQ_*环境变量,所以这不是问题。

在我的例子中,我创建了一个集群,但我相信在rabbitmq.conf可用之前,该解决方案适用于所有用例。

票数 3
EN

Stack Overflow用户

发布于 2018-02-07 11:10:45

我认为您必须从环境变量或特定文件中设置用户名和密码,使用带有-(破折号)作为文件名的-f标志从stdin.which读取包含用户名和密码的配置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48484501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档