



'mysql'@'localhost', а когда вы подключаетесь извне, mysql видит вас как другого юзера: 'mysql'@'какой-то-ip''mysql'@'%' и подключаться с его паролем.
# Database
db:
...
ports:
- 127.0.0.100:3306:3306
...

# Development configuration
version: "3.7"
services:
...
# Database
db:
image: percona:latest
container_name: rapp.db
restart: on-failure
ports:
- 127.0.0.100:3306:3306
expose:
- 3306
networks:
- api
volumes:
- ./docker/mysql/dumps:/var/mysql/dumps
- ./docker/mysql/test-data:/var/mysql/test-data
env_file:
- ./docker/mysql/.env
- ./docker/.env
...