docker-library / mongo

Docker Official Image packaging for MongoDB
https://www.mongodb.org/
Apache License 2.0
1.03k stars 621 forks source link

MongoDB container environment variables not applied for authentication #715

Open JustAnotherLars opened 2 weeks ago

JustAnotherLars commented 2 weeks ago

I'm running a MongoDB instance as a Windows container using Docker Compose, and I'm having trouble with MongoDB authentication. Although I’ve set the MONGO_INITDB_ROOT_USERNAME and MONGO_INITDB_ROOT_PASSWORD environment variables, MongoDB Compass fails authentication when I attempt to connect using these credentials. If I remove the username and password from the connection string in MongoDB Compass, I can connect without issues, which suggests the environment variables might not be applied correctly.

Docker Compose Configuration:

services:
  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

Steps to Reproduce:

  1. Start the MongoDB container using the above Docker Compose configuration.
  2. Try connecting with MongoDB Compass using the following credentials.
    • Username: root
    • Password: example

Expected Behavior: The MongoDB container should start with the specified root username and password, allowing authentication via MongoDB Compass.

Actual Behavior: MongoDB Compass fails to authenticate with the provided credentials. However, I can connect without authentication if I omit the username and password from the connection string.

Question: Why are the environment variables not being applied to the MongoDB container for authentication?

tianon commented 2 weeks ago

See https://github.com/docker-library/mongo/issues/291#issuecomment-410813034 and https://github.com/docker-library/mongo/issues/708 (we can't really implement the entrypoint for Windows containers effectively/correctly).