Você pode simplificar consideravelmente seu arquivo de composição:
version: "3"
services:
mysql:
image: mysql:5.7
volumes:
- mysql-data:/var/lib/mysql
web:
image: unoerp9
ports:
- "8888:8080"
Existe uma rede criada automaticamente para cada arquivo de composição e todos os contêineres fazem parte dela. Dentro dessa rede, todas as portas dos contêineres estão expostas. Isso significa que você pode conectar a partir do seu tomcat o banco de dados com mysql/my_database_name
, você pode omitir a porta lá também porque é o padrão 3306.
Acredito que seu erro do MySQL surge porque a imagem padrão mysql: latest é a versão 8, que provavelmente não é a mesma do sistema de produção. Acima escolhi a tag 5.7 porque ela especifica a versão em algum grau para que você não obtenha problemas de compatibilidade, mas ainda tire proveito das atualizações de segurança de por exemplo 5.7.22 (que @Mohsen sugeriu) para 5.7.23 que é a versão mais nova em o momento.
Também adicionei um volume para armazenar os dados do banco de dados (caso isso seja útil), portanto, as alterações feitas no banco de dados são mantidas entre as reinicializações ( docker-compose down
) quando os contêineres são excluídos.