skip to Main Content

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:

3

Answers


  1. Chosen as BEST ANSWER

    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....


  2. 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.

    Login or Signup to reply.
  3. You should create network

        version: '2.1'
    
    services:
    
      wordpress:
        image: wordpress
        networks:
          - db_net
        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
        networks:
          - db_net
        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:
    networks:
      db_net:
        driver: bridge
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search