I just created a LEMP stack (Linux, Nginx, MariaDB, PHP-FPM) with docker and docker-compose. But somehow, I cannot access to my database trough phpMyAdmin.
When I’m trying to reach the phpMyAdmin web-server, I got these errors:
MySQL said: Documentation
Cannot connect: invalid settings.
Packets out of order. Expected 0 received 1. Packet size=69
mysqli_real_connect(): Error while reading greeting packet. PID=18
mysqli_real_connect(): (HY000/2006): MySQL server has gone away
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
The rest is working fine.
Here is my docker-compose.yml
file:
version: "3.3"
services:
nougat: #Nginx Server
image: tutum/nginx:latest
ports:
- "8080:80"
links:
- papaya # PHP-FPM service
volumes:
- type: bind
source: ./nginx
target: /etc/nginx/sites-available
- type: bind
source: ./nginx
target: /etc/nginx/sites-enabled
- type: bind
source: ./logs/nginx-error.log
target: /var/log/nginx/error.log
- type: bind
source: ./logs/nginx-access.log
target: /var/log/nginx/access.log
papaya: # PHP-FPM service
build: .
volumes:
- type: bind
source: ./public
target: /usr/share/nginx/html
mango: # MariaDB database
image: mariadb:10.5.1
volumes:
- type: bind
source: ./mango_database
target: /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: admin
pomegranate: # phpMyAdmin web-service
image: phpmyadmin/phpmyadmin:4.9.4
restart: always
links:
- mango:mysql # MySQL database
ports:
- "8081:80"
environment:
PMA_HOST: mysql
PMA_USER: root
PMA_PASSWORD: admin
PMA_ARBITRARY: 1
And here is my Dockerfile
:
FROM php:7.4.3-fpm
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get update -y && apt-get install -y libwebp-dev libjpeg62-turbo-dev libpng-dev libxpm-dev
libfreetype6-dev
RUN apt-get update &&
apt-get install -y
zlib1g-dev
RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip
RUN docker-php-ext-install gd
Thank you for your help in advance.
Advertisement
Answer
connect all your service together using networks
docker-compose.yml
version: "3.3"
services:
nougat: #Nginx Server
image: tutum/nginx:latest
ports:
- "8080:80"
networks: # <-- Add this line
- random_name # <-- Add this line
# links: # <-- Remove this
# - papaya # <-- Remove this
volumes:
- type: bind
source: ./nginx
target: /etc/nginx/sites-available
- type: bind
source: ./nginx
target: /etc/nginx/sites-enabled
- type: bind
source: ./logs/nginx-error.log
target: /var/log/nginx/error.log
- type: bind
source: ./logs/nginx-access.log
target: /var/log/nginx/access.log
papaya: # PHP-FPM service
build: .
networks: # <-- Add this line
- random_name # <-- Add this line
volumes:
- type: bind
source: ./public
target: /usr/share/nginx/html
mango: # MariaDB database
image: mariadb:10.5.1
networks: # <-- Add this line
- random_name # <-- Add this line
volumes:
- type: bind
source: ./mango_database
target: /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: admin
pomegranate: # phpMyAdmin web-service
image: phpmyadmin/phpmyadmin:4.9.4
restart: always
# links: # <-- Remove this
# - mango:mysql # <-- Remove this
ports:
- "8081:80"
networks: # <-- Add this line
- random_name # <-- Add this line
environment:
PMA_HOST: mysql
PMA_USER: root
PMA_PASSWORD: admin
PMA_ARBITRARY: 1
networks: # <-- Add this line
random-name: # <-- Add this line