0

I have a WP project with following docker-compose configuration. When I try to connect my http://localhost to access the installation, I get 500 and I read this in the log:

PHP Fatal error: Uncaught mysqli_sql_exception: Connection refused in /var/www/html/web/wp/wp-includes/wp-db.php

I assume there is something wrong with the ip or the host but the weird thing is that phpmyadmin is working fine, and it connects with mysql without issues.

version: '3.9'
services:
  nginx:
    image: nginx:latest
    container_name: ${APP_NAME}-nginx
    ports:
      - '80:80'
    volumes:
      - "./nginx/:/etc/nginx/templates/"
      - ./src:/var/www/html:rw,cached
      - ./certs:/etc/certs
    environment:
      - "NGINX_ENVSUBST_TEMPLATE_SUFFIX=.conf"
      - "DOMAIN=${DOMAIN}"
    depends_on:
      - wordpress
    restart: always

  mysql:
    image: mariadb:latest
    container_name: ${APP_NAME}-mysql
    command: --lower_case_table_names=2
    volumes:
       - './data/db:/var/lib/mysql:delegated'
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
      - MYSQL_DATABASE=${DB_NAME}
    restart: always
    ports:
      - '3307:3306'

  wordpress:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ${APP_NAME}-wordpress
    volumes:
      - ./src:/var/www/html:rw,cached
      - ./config/php.ini:/usr/local/etc/php/conf.d/php.ini
    environment:
      XDEBUG_ENABLED: 1
      XDEBUG_CONFIG: remote_host=host.docker.internal
      PHP_IDE_CONFIG: serverName=localhost
    env_file:
      - src/.env
    depends_on:
      - mysql
    restart: always

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: ${APP_NAME}-phpmyadmin
    volumes:
      - ./config/phpmyadmin.ini:/usr/local/etc/php/conf.d/phpmyadmin.ini
    environment:
      PMA_HOST: "${DB_HOST}"
      PMA_PORT: 3306
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
    ports:
      - '8083:80'
    links:
      - mysql:mysql

  mailhog:
    container_name: ${APP_NAME}-mailhog
    image: mailhog/mailhog
    ports:
      - "8025:8025"
      - "1025:1025"

  composer:
    image: composer
    container_name: ${APP_NAME}-composer
    working_dir: /var/www/html
    restart: 'no'
    volumes:
      - ./src:/var/www/html:rw,cached

My wordpress .env, among the other settings, set the host like the following:

DB_HOST="mysql:3307"

But I also tried

DB_HOST="mysql:3306"

or simply

DB_HOST="mysql"

Do you have any suggestions?

Thanks.

1 Answer 1

1

your Wordpress Instance and MySQL Instance isn't connected. Try adding networks on the docker-compose.yml

nginx:
 ...
 networks:
  - your-network-name

mysql:
 ...
 networks:
  - your-network-name

wordpress:
 ...
 networks:
  - your-network-name

and on the bottom of the file add:

networks:
 your-network-name:
  driver: bridge

this is the way to configure docker to be connected each other

Sign up to request clarification or add additional context in comments.

1 Comment

This is good. I couldn't see it, funny thing that I removed it accidentally from a previous version. Thanks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.