Similar a No se puede conectar al contenedor MongoDB desde otro contenedor Docker , pero las respuestas de esta publicación no funcionan para mí.
Soy nuevo en Docker. Tratando de aprenderlo en un ejemplo de mecanografiado/express/mongo/mongoose api.
Lo que estoy tratando de hacer (y con lo que tengo problemas) es usar la línea mongo cmd en un contenedor mongo en ejecución después de que se haya activado usando docker compose up
. Aunque tengo mis datos bien conservados en un volumen de Docker, parece que no puedo iniciar sesión en la base de datos usando la línea cmd.
Este es mi archivo docker-compose.yml
:
version: '3.9' services: api: container_name: api_ts build: . restart: unless-stopped environment: - DB_URL=mongodb://myself:pass123@mongo:27017/ ports: - '3131:3131' depends_on: - mongo links: # (seems to be needed) - mongo mongo: container_name: mongo_container image: mongo:latest restart: always volumes: - mongo_dbv:/data/db environment: - MONGO_INITDB_ROOT_USERNAME=myself - MONGO_INITDB_ROOT_PASSWORD=pass123 ports: - '27017:27017' volumes: mongo_dbv: {}
Este es mi Dockerfile:
FROM node:alpine WORKDIR /usr/src/app COPY package*.json . RUN npm ci COPY . . ENV PORT=3131 EXPOSE 3131 COPY .env ./dist CMD ["npm", "start"]
Estoy corriendo
docker compose up -d --build
Después de que ambos servicios estén listos, hago:
docker exec -it mongo_container mongo show dbs
... y la salida del último cmd está vacía
(lo mismo ocurre al intentar seguir las respuestas en la publicación mencionada anteriormente)
Estoy seguro de que la base de datos contiene datos, porque puedo verificarlos usando el cliente REST.
Además, estoy un poco desconcertado, y tal vez esto esté conectado de alguna manera, por qué no hay indicación, ni en docker-compose.yml ni en Dockerfile, del nombre de la base de datos que estoy usando. Esperaría que sea parte de la salida show dbs
. A pesar de eso, mi api funciona bien.
Listar bases de datos requiere autenticación
docker exec -it mongo_container mongo -u myself -p pass123
Ahora puedes listar bases de datos
> show dbs admin 0.000GB config 0.000GB local 0.000GB
Nota: mongo debería mostrarle una advertencia de que el shell "mongo" ha sido reemplazado por "mongosh". Cuando usa mongosh, se mostrará un error de autenticación adecuado en el intento de listado de la base de datos.