5

我在 Windows Server 2019 中安装了 docker,DockerProvider 我正在使用此代码

Install-Module DockerProvider
Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview
[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")

之后我Docker-Compose用这个代码安装

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\docker-compose.exe

之后我使用 docker compose 文件

version: "3.5"

services:


  rabbitmq:
    # restart: always
    image: rabbitmq:3-management
    container_name: rabbitmq
    ports:
      - 5672:5672
      - 15672:15672
    networks:
      - myname
    # network_mode: host
    volumes: 
      - rabbitmq:/var/lib/rabbitmq



networks:
  myname:
    name: myname-network

volumes:
  rabbitmq:
    driver: local

到这里为止一切都很好,但是在我http://localhost:15672/在浏览器中调用 url 之后,rabbitmq 崩溃了,我看到了这个错误docker logs <container-id>

Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only

.yml文件正常工作,docker for windows 但在 Windows 服务器中运行该文件后,我看到此错误

4

2 回答 2

1

解决方案是映射将创建 cookie 文件的不同卷;

所以对于你的例子,不是;

- rabbitmq:/var/lib/rabbitmq

但;

- rabbitmq:/var/lib/rabbitmq/mnesia
于 2020-11-27T19:32:44.377 回答
0

您还可以选择覆盖commanddocker 映像以解决它所抱怨的问题。假设你的 cookie 文件是/var/lib/rabbitmq/.erlang.cookie,替换原来的 docker image 命令,大概是:

["rabbitmq-server"]

和:

["bash", "-c", "chmod 400 /var/lib/rabbitmq/.erlang.cookie; rabbitmq-server"]

在您的 docker-compose 文件中,它将如下所示:

...
image: rabbitmq:3-management
...
ports:
- "5672:5672"
- "15672:15672"
volumes:
- ...
command: ["bash", "-c", "chmod 400 /var/lib/rabbitmq/.erlang.cookie; rabbitmq-server"]

当然,您在这里介绍了一些您认为rabbitmq-server将来会保持这种状态的解决方法/技术债务。

于 2022-02-02T14:41:28.423 回答