I’m having trouble connecting to my MariaDB database via my Laravel Sail docker environment through PHPmyadmin on Windows 10. Here’s my docker compose file, what am I missing:
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.1
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.1/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
IGNITION_LOCAL_SITES_PATH: '${PWD}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mariadb
# - redis
- mailpit
- phpmyadmin
mariadb:
image: 'mariadb:10'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sail-mariadb:/var/lib/mysql'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test:
- CMD
- mysqladmin
- ping
- '-p${DB_PASSWORD}'
retries: 3
timeout: 5s
# redis:
# image: 'redis:alpine'
# ports:
# - '${FORWARD_REDIS_PORT:-6379}:6379'
# volumes:
# - 'sail-redis:/data'
# networks:
# - sail
# healthcheck:
# test:
# - CMD
# - redis-cli
# - ping
# retries: 3
# timeout: 5s
mailpit:
image: 'axllent/mailpit:latest'
ports:
- '${FORWARD_MAILPIT_PORT:-1025}:1025'
- '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
networks:
- sail
phpmyadmin:
image: 'phpmyadmin:latest'
ports:
- 8080:80
networks:
- sail
environment:
- PMA_ARBITRARY=1
networks:
sail:
driver: bridge
volumes:
sail-mariadb:
driver: local
# sail-redis:
# driver: local
2
Answers
add a link to the container. phpmyadmin needs to be linked to the running database container:
The 2 error messages below the text fields in your screenshot are telling you that it can’t resolve the server name
mysql
.In phpadmin, you need to use the service name of the database as the server name.
So instead of
mysql
as you’ve used in your screenshot, you need to usemariadb
.Also be aware that if a database already exists in the directory you’ve mapped to
/var/lib/mysql
, then the variables you set for username, password etc. are not used. Those are only used if no database exists when the container starts.