Enige tijd terug heb ik een Pi4 aangeschaft en ben langzaam alle diensten van mijn ouwe synology aan het overzetten op de Pi4. Ik draai alles in docker en, los dat ik het erg leuk vind om er mee te spelen, werkt het ook verbluffend goed.
Voor de meeste dockers maak ik gebruik van macvlan om de dockers te voorzien van fixed IP adressen zodat alles lekker op 443 en 80 kan draaien.
Ik maak dus gebruik van een Pi4 en draai Linux docker 5.10.11-v7l+. Maak gebruik van docker-compose en DockStarter. Leuke tool, maar niet alle dockers staan in de lijst dus zal zelf ook wat moeten toevoegen.
MariaDB staat wél in de lijst en heb ik derhalve ook via DockStarter geinstalleerd.
Docker-compose.yml:
.env:
Docker-compose.override.yml:
Wordpress staat niet in DockStarter dus heb ik handmatig gedaan alleen in docker-compose.override.yml:
Zoals je kunt zien maak ik inmiddels geen gebruik meer van MACVLAN voor deze containers. Ik laat poort 8000 omleiden naar 80 voor wordpress en 3306 is gewoon voor MariaDB. Dit heb ik gedaan om uit te sluiten of het daar mis gaat, maar exact hetzelfde gedrag.
Ik krijg alleen maar access denied, wat ik ook doe. Een snippit uit de log van wordpress:
Het maakt dus niet uit welk wachtwoord invoer, het blijft bovenstaande error. Ik heb een erg lang en complex wachtwoord nog gebruikt, maar dat maakt ook niet uit.
Als ik via mysql vanuit mijn Synology hetzelfde probeer, dus: mysql -h docker -u wordpress -p , dan krijg ik dezelfde access denied. Docker resolved keurig naar het juiste IP uiteraard.
Ga ik met docker exec -it mariadb bash naar de shell van de maria container dan kom ik er gewoon in. Als ik dan mysql type dan is hij verbonden, zonder wachtwoord. Probeer ik met -u root -p dan kom ik er dus ook niet in met het wachtwoord wat ik ingesteld heb.
Met het account zonder wachtwoord kan ik gewoon databases aanmaken, users aanmaken maar 't maakt allemaal nix uit, hij blijft access denied geven. Als ik een nieuwe user aanmaak via de CLI in de container, dan kan ik met die user niet verbinden vanaf de synology, in de container zelf wel.
Poort 3306 staat gewoon open:
Waar kan het nu aan liggen dat het niet werkt? Het lijkt alsof de ENV settings niet geset worden want noch de database wordpress noch de user wordpress zijn aanwezig of het root pass werkt. Kijkend op de pagina van het image zijn deze settings wel degelijk ondersteund en zouden ze moeten werken. Kijk ik in portainer dan zie ik ook gewoon de environment settings toegepast.
Na veel uren zoeken en verschillende configs uit te proberen ben ik geneigd het op te geven. Maar zou het graag werkend willen zien.
Voor de meeste dockers maak ik gebruik van macvlan om de dockers te voorzien van fixed IP adressen zodat alles lekker op 443 en 80 kan draaien.
Ik maak dus gebruik van een Pi4 en draai Linux docker 5.10.11-v7l+. Maak gebruik van docker-compose en DockStarter. Leuke tool, maar niet alle dockers staan in de lijst dus zal zelf ook wat moeten toevoegen.
MariaDB staat wél in de lijst en heb ik derhalve ook via DockStarter geinstalleerd.
Docker-compose.yml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| mariadb: image: ghcr.io/linuxserver/mariadb hostname: ${DOCKERHOSTNAME} ports: - ${MARIADB_PORT_3306}:3306 container_name: mariadb environment: - MYSQL_ROOT_PASSWORD=${MARIADB_MYSQL_ROOT_PASSWORD} - PGID=${PGID} - PUID=${PUID} - TZ=${TZ} logging: driver: json-file options: max-file: ${DOCKERLOGGING_MAXFILE} max-size: ${DOCKERLOGGING_MAXSIZE} restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - ${DOCKERCONFDIR}/mariadb:/config - ${DOCKERSTORAGEDIR}:/storage |
.env:
code:
1
2
3
4
| MARIADB_ENABLED=true MARIADB_MYSQL_ROOT_PASSWORD=RootPass123 MARIADB_NETWORK_MODE= MARIADB_PORT_3306=3306 |
Docker-compose.override.yml:
code:
1
2
3
4
5
6
| mariadb: hostname: mariadb environment: - MYSQL_DATABASE=wordpress - MYSQL_USER=wordpress - MYSQL_PASSWORD=Wordpress123 |
Wordpress staat niet in DockStarter dus heb ik handmatig gedaan alleen in docker-compose.override.yml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| wordpress: container_name: wordpress image: wordpress depends_on: - mariadb environment: - WORDPRESS_DB_HOST=172.18.0.5:3306 - WORDPRESS_DB_USER=wordpress - WORDPRESS_DB_PASSWORD=Wordpress123 - WORDPRESS_DB_NAME=wordpress ports: - 8000:80 volumes: - ${DOCKERCONFDIR}/wordpress:/var/www/html |
Zoals je kunt zien maak ik inmiddels geen gebruik meer van MACVLAN voor deze containers. Ik laat poort 8000 omleiden naar 80 voor wordpress en 3306 is gewoon voor MariaDB. Dit heb ik gedaan om uit te sluiten of het daar mis gaat, maar exact hetzelfde gedrag.
Ik krijg alleen maar access denied, wat ik ook doe. Een snippit uit de log van wordpress:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| [09-Feb-2021 12:36:30 UTC] PHP Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) in Standard input code on line 22 MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) MySQL Connection Error: (1045) Access denied for user 'wordpress'@'wordpress.compose_default' (using password: YES) WARNING: unable to establish a database connection to '172.18.0.5:3306' continuing anyways (which might have unexpected results) |
Het maakt dus niet uit welk wachtwoord invoer, het blijft bovenstaande error. Ik heb een erg lang en complex wachtwoord nog gebruikt, maar dat maakt ook niet uit.
Als ik via mysql vanuit mijn Synology hetzelfde probeer, dus: mysql -h docker -u wordpress -p , dan krijg ik dezelfde access denied. Docker resolved keurig naar het juiste IP uiteraard.
Ga ik met docker exec -it mariadb bash naar de shell van de maria container dan kom ik er gewoon in. Als ik dan mysql type dan is hij verbonden, zonder wachtwoord. Probeer ik met -u root -p dan kom ik er dus ook niet in met het wachtwoord wat ik ingesteld heb.
Met het account zonder wachtwoord kan ik gewoon databases aanmaken, users aanmaken maar 't maakt allemaal nix uit, hij blijft access denied geven. Als ik een nieuwe user aanmaak via de CLI in de container, dan kan ik met die user niet verbinden vanaf de synology, in de container zelf wel.
Poort 3306 staat gewoon open:
code:
1
2
3
4
5
| PORT STATE SERVICE 3306/tcp open mysql MAC Address: DC:A6:32:DB:A1:3E (Raspberry Pi Trading) Nmap done: 1 IP address (1 host up) scanned in 1.53 seconds |
Waar kan het nu aan liggen dat het niet werkt? Het lijkt alsof de ENV settings niet geset worden want noch de database wordpress noch de user wordpress zijn aanwezig of het root pass werkt. Kijkend op de pagina van het image zijn deze settings wel degelijk ondersteund en zouden ze moeten werken. Kijk ik in portainer dan zie ik ook gewoon de environment settings toegepast.
Na veel uren zoeken en verschillende configs uit te proberen ben ik geneigd het op te geven. Maar zou het graag werkend willen zien.