在 docker-compose 文件中提供 rabbitmq.conf 会给出“sed:无法重命名/etc/rabbitmq/sedMaHqMa:设备或资源繁忙". [英] Providing rabbitmq.conf in a docker-compose file gives "sed: cannot rename /etc/rabbitmq/sedMaHqMa: Device or resource busy"

查看:59
本文介绍了在 docker-compose 文件中提供 rabbitmq.conf 会给出“sed:无法重命名/etc/rabbitmq/sedMaHqMa:设备或资源繁忙".的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

My docker-compose looks like this:

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 看起来像这样:

My rabbitmq.conf looks like this:

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 时,出现以下错误:

However when I try to do docker-compose up I get the following error:

无法重命名/etc/rabbitmq/sedMaHqMa:设备或资源繁忙

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

I tried using old format of config file (rabbitmq.config) and it was not giving me this error, however I need to use new format because I need the password to be provided by during the startup via env. variables.

2018 年 2 月 20 日编辑

这里是列表中当前可用的环境变量Rabbitmq docker 镜像,它们足以为 AMQP 和 HTTP(管理 API 和 Web 控制台)设置 TLS

Here is a list of currently available environmental variables in Rabbitmq docker image, and they are enough to setup TLS for both AMQP and HTTP (management API and Web Console)

复制它们以防链接损坏:

Copying them in case the link will become broken:

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

推荐答案

这似乎是当前rabbitmq的问题Docker 文件.特别是 sed 命令在映射为卷的配置文件上似乎无法正常工作.然而,既然你已经控制了你的 rabbitmq.conf,为什么不在这个文件中包含默认用户和密码

This seem to be an issue with current rabbitmq Dockerfile. Particulary sed command seem not work properly on configfile mapped as volume. However as you have control over your rabbitmq.conf anyway, why not include default user and password to this file

default_user = admin
default_pass = YourStrongPasswort

删除 RABBITMQ_DEFAULT_USER 和 RABBITMQ_DEFAULT_PASS 从您的撰写文件中.这可能是最快的解决方法.刚刚测试,对我有用(官方 rabbitmq:3.7-management).

and remove RABBITMQ_DEFAULT_USER and RABBITMQ_DEFAULT_PASS out of your compose file. This is fastest work-around probably. Just tested, works for me (official rabbitmq:3.7-management).

这篇关于在 docker-compose 文件中提供 rabbitmq.conf 会给出“sed:无法重命名/etc/rabbitmq/sedMaHqMa:设备或资源繁忙".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆