Crie uma rede fora de seus arquivos de composição (isso evita dependências na ordem de um arquivo de composição sendo implantado):
$ docker network create dbnet
Em seguida, coloque os serviços que você deseja conectar uns aos outros nesta rede externa. Por exemplo. o arquivo de composição para o mysql pode ser:
version: '3.5'
networks:
dbnet:
external: true
name: dbnet
services:
mysql:
networks:
- dbnet
E seu outro arquivo de composição se conectaria à mesma rede:
version: '3.5'
networks:
dbnet:
external: true
name: dbnet
services:
pythonapp:
networks:
- dbnet
De pythonapp, você se conecta ao banco de dados como "mysql" (o nome do serviço) em vez de IP. O Docker manipulará a resolução de DNS para você, contanto que os contêineres estejam na mesma rede.
Note que usei a sintaxe 3.5+ para definir redes externas. Antes disso, a sintaxe era:
networks:
dbnet:
external:
name: dbnet
Para mais detalhes, consulte: link