Inconsistent login problems using MySQL with Docker using docker-compose

First off, I want to say thank you for your time and for your willingness to help.
Secondly, I am a complete noob to Docker, only having started working with it today.

I wanted to learn how to setup Docker as the ability to have independent containers set up, 1 to each website I was to work on without depending on WAMPServer 3, was attractive. I started by following this tutorial, which seemed pretty straightforward:

I installed Docker and installed the WSL for Windows 10 with the WSL Ubuntu 20.04 and the Linux Kernel Update for WSL.

I was able to get the tutorial, as shown, to work, but wanted to customize it to be as close as possible to my Client’s webhosting provider’s server:

PHP 7.4.27 (to be upgraded to PHP 8.0 soon)
MariaDB 10.3.30 → MySQL 15.1

I am not sure how to address using Apache 2.4.46 as yet within the docker-compose.yml

I also want to use a docker-compose yaml file so as not to have to use a command line:

My docker-compose.yml is as follows:

version: '3.9'
        image: nginx:1.20.0
            - "80:80"
            - ./nginx.conf:/etc/nginx/conf.d/nginx.conf
            - ./app:/app
            context: .
            dockerfile: PHP.Dockerfile
            - ./app:/app
        image: mariadb:10.3.30
            MYSQL_ROOT_PASSWORD: 'secret'
            MYSQL_USER: 'schauer'
            MYSQL_PASSWORD: 'schauer'
            MYSQL_DATABASE: 'schauer'
#            - mysqldata:/var/lib/mysql
            - ./mysqldata:/mysqldata
            - 3306:3306
            - mysql
        image: phpmyadmin/phpmyadmin
            - mysql
            - "8000:80"
            PMA_HOST: mysql
        restart: always
    mysqldata: {}

My PHP.Dockerfile is as follows:

FROM php:7.4.27-fpm

#RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-install mysqli

RUN pecl install xdebug && docker-php-ext-enable xdebug

My nginx.conf is as follows:

server {
    listen 80 default_server;
    root /app/public;

    index index.php index.html index.htm;

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;     

The structure of the project is:

These files are in the folder a6_schauer.dkr:

Please note that I will be adjusting the logins appropriately once I can actually get matters working.

I can successfully connect to: to run PHPMyAdmin and login with the credentials:
username: root
p/w: secret

Since this works, I must have been able to make a successful database connection.

Problem 1:

My workflow when working on a WordPress site is to work locally, then make a backup to be deployed remotely via use of the Duplicator plugin ( via ). Duplicator also allows going from the remote server to a local server in the same fashion.

I cannot seem to connect to the database.

While in PHPMyAdmin, I created the schauer database and gave the user schauer all privileges as a temporary measure.

When I try to test the database, no matter what combination of usernames specified in the docker-compose file I try, nor host names seems to work. I’ve tried user: root, p/w: secret with the db name: schauer, with host being localhost or, and done the same with the username and password of schauer and schauer, respectively.

Note that within the PHP.Dockerfile I commented out the line with PDO_Mysql as Duplicator requires MySQLi in order to work.

Problem 2:
For Duplicator, I also cannot, as yet get the shell_exec to work nor the ability to use ZIPArchive to extract the ZIPfile that holds the WordPress site files. I can extract them manually and all works well until I get to the part where I have to connect to the database in Problem 1.

Problem 3:
I wanted to have the MySQL data files be stored in a folder underneath the project folder, but nothing seems to appear there. I am not sure if my MySQL data is really being stored under /var/lib/mysql as I don’t know how to verify anything much at this point.

I’ve also tried resetting matters via:
docker-compose down -v
docker-compose up -d

And rebuilding via:
docker-compose build

whenever I make changes to the Docker config files.

Any help would be greatly appreciated.

Thank you!