Faaaaala Dev!

Caso a versão do seu docker-compose seja 1.28 ou maior, você provavelmente obterá o erro network_mode is incompatible with port_bindings ao tentar rodar o comando docker-compose up para subir seus containers. Esse erro ocorre pois na última atualização o network_mode deixou de ser compatível com a propriedade ports .

Mas calma, nós vamos te passar a solução para seu projeto!

Passo a passo - Leia até o final 😉

1 - Remova a propriedade network_mode no service da aplicação e do banco de dados

2 - No service da aplicação você precisará colocar as seguintes propriedades:

links:
	- database
depends_on: 
	- database

A propriedade depends_on irá informar que nosso serviço de api irá depender do serviço do banco de dados (database). Isso fará com que a ordem para os containers subirem seja primeiro o serviço database e depois o da api.

A propriedade links faz uma ligação entre os containers, permitindo que o container de destino (api) tenha informações do container de origem(database). Dessa forma, nosso service da aplicação agora conseguirá se comunicar com nosso banco de dados não mais através do IP, mas sim pelo nome do container.

3 - No arquivo ormconfig.json o host deverá ser preenchido com o valor localhost.

4 - No arquivo index.ts, dentro da pasta database, deixar da seguinte forma:

import { createConnection, getConnectionOptions } from 'typeorm';

interface IOptions {
  host: string;
}

getConnectionOptions().then(options => {
  const newOptions = options as IOptions;
  newOptions.host = 'database'; //Essa opção deverá ser EXATAMENTE o nome dado ao service do banco de dados
  createConnection({
    ...options,
  });
});

5 - Rodar o comando docker-compose up -d —force-recreate no terminal, para atualizar as informações do container.

Para testar, você pode verificar se a aplicação está rodando, através do comando docker logs rentx -f

IMPORTANTE

Testar também as migrations, com o comando yarn typeorm migration:run