Home > Software design >  Wordpress in Docker cannot see DB
Wordpress in Docker cannot see DB

Time:01-12

I am trying to deploy a Wordpress instance on my PI using docker. Unfortunately I am receiving an error, that the App cannot establish a DB connction.

All containers run in the bridged network. I am exposing port 80 of the APP on 8882 and the port 3306 of the DB on 3382.

A second Wordpress installation on ports 8881 (APP) and 3381 (DB) in the same network are perfectly working, where is the flaw in my setup?

version: '2.1'

services:

  wordpress:
    image: wordpress
    network_mode: bridge
    restart: always
    ports:
      - 8882:80
    environment:
      PUID: 1000
      PGID: 1000
      WORDPRESS_DB_HOST: [addr. of PI]:3382
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: secret
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress:/var/www/html

  db:
    image: ghcr.io/linuxserver/mariadb
    network_mode: bridge
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=secret
      - TZ=Europe/Berlin
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=secret #Must match the above password
    volumes:
      - db:/config
    ports:
      - 3382:3306
    restart: unless-stopped

volumes:
  db:
  wordpress:

CodePudding user response:

When containers are on the same bridge network, they can talk to each other using their service names as hostnames. In your case, the wordpress container can talk to the database container using the hostname db. Since it's not talking via the host, any port mapping is irrelevant and you just connect on port 3306.

So if you change

WORDPRESS_DB_HOST: [addr. of PI]:3382

to

WORDPRESS_DB_HOST: db

it should work.

You can remove the port mapping on the database container if you don't need to access the database directly from the host.

CodePudding user response:

Ok, learned something today, like everyday.

Better to have such installations all nicely seperated in different networks and also better do not use same container names, such as DB. Better seperate them like DB-WP1, DB-WP2, etc....

In my setup, I couldn´t see any reason, why it should interfere with each other, but doing the above will not harm anything at all....

  •  Tags:  
  • Related