15

I'm installed docker in windows server 2019 with DockerProvider I'm using this code

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

after that I install Docker-Compose with this code

[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

after that I use a docker compose file

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

everything is Ok up to here but after i call http://localhost:15672/ url in my browser rabbitmq crashes and I see this error in docker logs <container-id>

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

this .yml file is working correctly in docker for windows but after running the file in windows server, I see this error

d.borzouei
  • 171
  • 1
  • 1
  • 5

5 Answers5

13

Solution is to map a different volume where the cookie file will be created;

So for your example, not;

- rabbitmq:/var/lib/rabbitmq

but;

- rabbitmq:/var/lib/rabbitmq/mnesia
alv
  • 1,037
  • 12
  • 15
5

You also have the option to overwrite the command of the docker image to fix the issue it is complaining about. Assuming that your cookie file is /var/lib/rabbitmq/.erlang.cookie, replace the original docker image command, which is probably:

["rabbitmq-server"]

with:

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

In your docker-compose file it will look like this:

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

Of course, you introduce here some workaround/technical debt that you assume rabbitmq-server will stay like that in the future.

Gabriel Petrovay
  • 20,476
  • 22
  • 97
  • 168
0

In my case I deleted the previous file .erlang.cookie

ls -al
128 Apr  4 10:55 .
384 Apr  4 10:55 ..
 20 Apr  4 02:00 .erlang.cookie <= delete this 
192 Apr  4 10:55 mnesia

and restart docker (or nerdctl) compose

obe6
  • 1,743
  • 15
  • 23
0

found .erlang.cookie file in your host directory, then type chmod 400 .erlang.cookie and restart rabbitmq docker, it should be fixed.

jinzuchi
  • 27
  • 5
-2
version: '3'

services:
  rabbitmq:
    image: rabbitmq:3-management
    hostname: rabbitmq
    ports:
      - 5672:5672
      - 15672:15672
    volumes:
      - ./rabbitmq1/data:/var/lib/rabbitmq
      - ./rabbitmq1/config:/etc/rabbitmq
    environment:
      RABBITMQ_ERLANG_COOKIE: "rabbitcookie"
      RABBITMQ_DEFAULT_USER: "admin"
      RABBITMQ_DEFAULT_PASS: "password"
    networks:
      rabbitmq-cluster:

networks:
  rabbitmq-cluster:
    driver: bridge

Here is my verified config file

If you want to see the verification results, please see hereenter image description here

  • @liuchanglong I copied your image's relevant part into the answer, please verify it is as you intended and remove the image. – James Risner Mar 06 '23 at 13:12