我目前有一个在Docker容器中运行的小型服务器,该服务器使用RabbitMQ,它由docker-compose使用DockerHub image运行。
它运行良好,但是我担心它可能没有针对生产进行正确配置(生产是一台简单的服务器,没有集群或任何花哨的东西)。特别是,我担心RabbitMQ生产清单中所述的disk space limit。
我不确定如何通过docker-compose配置这些内容,因为该映像定义的env变量似乎非常有限。
我的docker-compose文件:
version: '3.4'
services:
rabbitmq:
image: rabbitmq:3-management-alpine
ports:
- "5672:5672"
- "15672:15672"
volumes:
- rabbitmq:/var/lib/rabbitmq
restart: always
environment:
- RABBITMQ_DEFAULT_USER=user
- RABBITMQ_DEFAULT_PASS=secretpassword
my-server:
# server config here
volumes:
rabbitmq:
networks:
server-network:
driver: bridge
答案 0 :(得分:2)
disk_free_limit
是在/etc/rabbitmq/rabbitmq.conf
中设置的,似乎这里没有可用的环境。
因此,您只需要使用自己的docker bind mount volume覆盖rabbitmq.conf
即可。
对于您的情况,如果您输入Rabbitmq容器,则可以看到:
shubuntu1@shubuntu1:~$ docker exec some-rabbit cat /etc/rabbitmq/rabbitmq.conf
loopback_users.guest = false
listeners.tcp.default = 5672
因此,您只需要添加disk_free_limit.absolute = 1GB
本地rabbitmq.conf
并将其安装到容器即可覆盖默认的配置,完整示例如下:
rabbitmq.conf:
loopback_users.guest = false
listeners.tcp.default = 5672
disk_free_limit.absolute = 1GB
docker-compose.yaml:
version: '3.4'
services:
rabbitmq:
image: rabbitmq:3-management-alpine
ports:
- "5672:5672"
- "15672:15672"
volumes:
- rabbitmq:/var/lib/rabbitmq
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
volumes:
rabbitmq:
networks:
server-network:
driver: bridge
检查是否立即生效:
$ docker-compose up -d
$ docker-compose logs rabbitmq | grep "Disk free limit"
rabbitmq_1 | 2019-07-30 04:51:40.609 [info] <0.241.0> Disk free limit set to 1000MB
您会看到disk free limit
已设置为1GB。