Docker wordpress multisitio: ¿qué puertos exponer?

2 minutos de lectura

avatar de usuario
ron_g

Estoy tratando de configurar WordPress multisitio/como una red en un contenedor Docker. De los documentos, entiendo que multisitio solo funciona con los puertos 80 y 443.

Cuando uso el puerto 8000 para el servicio wpmu como se muestra a continuación, puedo acceder a wordpress

docker-compose.yml

version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    ports:
    - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wpmu_db
      MYSQL_USER: wpmu_db_user
      MYSQL_PASSWORD: wpmu_db_user_password

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: root_password

  wpmu:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    volumes:
      - ".wp/:/var/www/html"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpmu_db_user
      WORDPRESS_DB_PASSWORD: wpmu_db_user_password
      WORDPRESS_DB_NAME: wpmu_db
      WORDPRESS_CONFIG_EXTRA: define('WP_ALLOW_MULTISITE', true );

volumes:
  db_data: {}

Cuando navego a http://localhost:8000/wp-admin/network.phpYo obtengo

Crear una red de sitios de WordPress

ERROR: No puedes instalar una red de sitios con tu dirección de servidor.

No puede utilizar números de puerto como: 8000.

Si cambio el puerto de 8000 a 80 o 443, el servicio ya no funciona (aparece “esta página no funciona – localhost no envió ningún dato” y 404 respectivamente).

¿Alguna idea de cómo configurar los puertos para que funcionen varios sitios?

avatar de usuario
kaysiz

Estoy usando WordPress 5.3.1 en Docker y logro solucionarlo agregando mi puerto expuesto a una lista de puertos permitidos en wp-admin/incluye/red.php.
Busque el siguiente código:

if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443') ) ) )

y cámbielo para incluir su puerto:

if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443', ':8000') ) ) )

  • ¡Para una configuración local, esta debería ser la respuesta aceptada!

    – Giorgio25b

    15 de enero de 2020 a las 0:33

¿Ha sido útil esta solución?