Задать вопрос
ZamarShoo
@ZamarShoo
React/Vue, Node/PHP, Wordpress/Drupal

Как подклчиться к mongo в docker?

Здравствуйте, только начал изучать node (express) и решил запустить mongoDB в Docker
Пытаясь работать через API мне выдает ошибку:
{
    "message": {
        "ok": 0,
        "code": 13,
        "codeName": "Unauthorized"
    }
}

Почему я решил, что ошибка из-за подключения к бд -- если убрать всю работу с бд и отдавать на запрос просто JSON, то все работает прекрасно. Уверен, что ошибка мега глупая, но я очень прошу помочь.
Собственно говоря, мой docker-compose.yml, взятый с докер хаба, только дописал порты:
version: '3.1'

services:

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

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

запускаю с помощью команды:
docker-compose up --build --force-recreate --renew-anon-volumes

Файл index.js (важная для него часть):
import express from 'express'
import mongoose from 'mongoose'
import dotenv from 'dotenv'
import cors from 'cors'

import authRoute from './routes/auth.js'

const app = express()
dotenv.config()

// Constants
const PORT = process.env.PORT || 3002
const DB_NAME = process.env.DB_NAME

// Middleware
app.use(cors())
app.use(express.json())

// Routes
app.use('/api/auth', authRoute)

async function start() {
    try {
        await mongoose.connect(`mongodb://localhost:27017/${DB_NAME}`)
        app.listen(PORT, () => console.log(`Server started on port: ${PORT}`))
    } catch (error) {
        console.log(error)
    }
}
start()
  • Вопрос задан
  • 1271 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mureevms
Если коннектит происходит из другого контейнера, надо коннектиться по имени контейрена, т.е. так:
wait mongoose.connect(`mongodb://mongo:27017/${DB_NAME}`)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы