Problema ao fazer a conexão com o mongo através do docker

Fala ai pessoal! Estou desenvolvendo uma API em node e usei o docker pra criar um container. Eu executei o “docker-compose build” e foi sem problemas, mas quando eu tento subir com “docker-compose up” ele mostra o seguinte erro:

Por algum motivo ele da timeOut. Esse erro só é exibido quando rodo o docker. Se eu subir com npm-start ele roda normalmente. Já desativei o firewal, já alterei o endereço do mongo… To ficando sem ideias. Vou deixar os códigos abaixo
version: “2”

docker-compose.yml

services:

app:

container_name: "SWAPI-Cotainer"

restart: always

build: .        

ports:

  - "3000:3000"

links:

  - mongo

depends_on:

  - mongo

command: npm start

mongo:

container_name: "mongo"

image: mongo

ports:

  - "27017:27017"

command: mongod --smallfiles --logpath=/dev/null # --quiet

Dockerfile:

FROM node:latest

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY package.json /usr/src/app/

RUN npm install

COPY . /usr/src/app

App:

require(‘dotenv/config’)

const express = require(‘express’);

const cors = require(‘cors’);

const mongoose = require(‘mongoose’);

const routes = require(’./routes’);

class App {

constructor() {

    this.server = express();

    this.middlewares();

    this.database();

    this.routes();

}

middlewares() {

    this.server.use(cors());

    this.server.use(express.json());

}   

database() {

    mongoose.connect(process.env.MONGO_URL, {

        useCreateIndex: true,

        useNewUrlParser: true,

        useUnifiedTopology: true,

        useFindAndModify: false,

    });

}

routes() {

    this.server.use(routes);

}

}

module.exports = new App().server;

Variáveis de ambiente:

APP

APP_URL=http://localhost:3000
NODE_ENV=development

MONGODB

MONGO_URL=mongodb://localhost:27017/planets

Dentro do container da app, 127.0.0.1 é o próprio container apenas. Em linux podes correr com o modo network=host para que tudo seja 127.0.0.1.
Em windows terás de configurar uma network e aceder ao IP do container que pretendes.

E como eu faço isso ?

 services:

    app:
        container_name: "SWAPI-Cotainer"
        (...)
        networks:
            mynet:
                ipv4_address: 192.168.20.1
    
    mongo:
        container_name: "mongo"
        (...)
        networks:
            mynet:
                ipv4_address: 192.168.20.2

networks:
    mynet:
        name: mynet
        ipam:
           driver: default
           config:
              - subnet: "192.168.20.0/25"

E aí ficas com
MONGO_URL=mongodb://192.168.20.2:27017/planets

Não funcionou. Diz que o endereço já está em uso

Eu não conheço a tua rede. Vai a ver e escolhi algum IP ja existente :smiley: