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!
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
Testar também as migrations, com o comando yarn typeorm migration:run