Acredito que o melhor seria você ter um Dockerfile para cada uma das partes(back e front). Sobre o front, se você não usa algum processamento a nível de servidor com o next, o ideal seria colocar o conteúdo gerado pelo build em alguma plataforma de CDN, recomendo o cloudflare pages, gratuíto e simples de configurar. Do contrário cria um Dockerfile para cada, no do backend você coloca no CMD ou ENTRYPOINT para rodar as migrations antes de executar node, quanto as variáveis de ambiente, o ideal é referencia-las dentro do docker-compose. Aí você cria as imagens e envia para o container registry que você usa, e no docker-compose você coloca elas como referência, sendo que para alterar o ambiente que deseja ou simplesmente fazer rodar, vai precisar apenas do arquivo docker-compose.yml

Compreendi mestre, dessa forma que você disse faz bastante sentido, muito obrigado!