No debería necesitar exponer el puerto 3306.
Tu setup.sh
crea un usuario diferente al que otorga. Los contenedores no son buenos para ejecutar servicios.
Hay buenas razones para usar las imágenes oficiales.
version: '3'
services:
mariadb:
image: mariadb:10.5.11
volumes:
- ~/data/maria:/var/lib/mysql
restart: always
environment:
MARIADB_USER: "${MARIA_LOGIN}"
MARIADB_PASSWORD: "${MARIA_PASS}"
MARIADB_DATABASE: wordpress
Sin embargo, no obtenga tantos errores/cosas de aprendizaje :-)
Desde tu repositorio, parece que también resolviste el resto (incluye wordpress, que es una imagen oficial).