You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Docker Compose部署的WordPress无法通过192.168.0.x IPv4访问

背景

各位社区成员好!
我使用Docker Compose在本地环境搭建了一个小型WordPress应用。
我尝试配置docker-compose.yml,让应用可通过192.168.0.x这类外部IPv4地址访问,但目前仅能通过以下方式访问:

  • http://localhost
  • http://127.0.0.1
  • http://0.0.0.0
疑问

是否可以通过无线局域网(WLAN)的外部IP访问该应用?

例如:http://192.168.0.13 或 http://192.168.65.10

以下是我的docker-compose.yml配置文件(配置后WLAN IPv4地址192.168.65.10无法访问):

version: '3'

services:

  db:
    image: mysql:latest
    container_name: wordpress-database
    restart: always
    volumes:
      - ./db-data:/var/lib/mysql 
    ports:
      - 3306:3306 
    environment:
      MYSQL_DATABASE: wordpress-database      
      MYSQL_USER: wordpress-user              
      MYSQL_PASSWORD: wordpress-password      
      MYSQL_ROOT_PASSWORD: root
    networks:
      internal:
        ipv4_address: 172.30.9.5
      lan:
        ipv4_address: 192.168.65.12

  pma:
    image: phpmyadmin/phpmyadmin
    container_name: wordpress-phpmyadmin
    restart: always
    environment:
      PMA_HOST: db
      # PMA_PORT: 3306
      MYSQL_ROOT_PASSWORD: root-database
    ports:
      - 8080:80
    depends_on:
      - db
    networks:
      internal:
        ipv4_address: 172.30.9.4
      lan:
        ipv4_address: 192.168.65.11

  wp:
    image: wordpress:latest
    container_name: wordpress-app
    restart: always
    volumes:
      - ./wp-app:/var/www/html     
    ports:
      - 80:80
    expose:
      - 80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_TABLE_PREFIX: wp_
      WORDPRESS_DB_NAME: wordpress-database        
      WORDPRESS_DB_USER: wordpress-user            
      WORDPRESS_DB_PASSWORD: wordpress-password    
    depends_on:
      - db
      - pma
    dns:
      - 127.0.0.1
      - 1.1.1.1
    networks:
      internal:
        ipv4_address: 172.30.9.3
      lan:
        ipv4_address: 192.168.65.10

networks:
  internal:
    ipam:
      config:
        - subnet: 172.30.9.0/29
  lan:
    name: lan
    driver: ipvlan
    driver_opts:
      parent: eth0.10
      ipvlan_mode: l2
    ipam:
      config:
        - subnet: "192.168.65.0/24"
          gateway: "192.168.65.1"
解决方案

1. 修正ipvlan网络的父接口配置

你当前配置的parent: eth0.10是VLAN子接口,如果你的WLAN并没有使用该VLAN(比如无线网卡是wlan0),这个配置会失效:

  • 用ip link show命令查看主机实际的无线网卡名称(通常是wlan0)
  • 将lan网络的parent字段替换为实际无线网卡名称

2. 移除冲突的端口映射

wp服务同时配置了ports: -80:80和ipvlan固定IP,两种方式冲突。如果用ipvlan让容器直接获取局域网IP,无需端口映射,删掉ports: -80:80这一行。

3. 配置WordPress站点地址

即使容器能被局域网访问,WordPress默认的localhost地址会导致跳转异常,需要在wp服务的环境变量中添加:

WORDPRESS_SITE_URL: http://192.168.65.10
WORDPRESS_HOME: http://192.168.65.10

4. 检查防火墙与权限

  • 主机防火墙需放行80端口,Linux下可执行sudo ufw allow 80/tcp
  • 确保启动容器时使用管理员权限(Linux下加sudo)

修正后的docker-compose.yml示例

version: '3'

services:

  db:
    image: mysql:latest
    container_name: wordpress-database
    restart: always
    volumes:
      - ./db-data:/var/lib/mysql 
    environment:
      MYSQL_DATABASE: wordpress-database      
      MYSQL_USER: wordpress-user              
      MYSQL_PASSWORD: wordpress-password      
      MYSQL_ROOT_PASSWORD: root
    networks:
      internal:
        ipv4_address: 172.30.9.5
      lan:
        ipv4_address: 192.168.65.12

  pma:
    image: phpmyadmin/phpmyadmin
    container_name: wordpress-phpmyadmin
    restart: always
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: root-database
    depends_on:
      - db
    networks:
      internal:
        ipv4_address: 172.30.9.4
      lan:
        ipv4_address: 192.168.65.11

  wp:
    image: wordpress:latest
    container_name: wordpress-app
    restart: always
    volumes:
      - ./wp-app:/var/www/html     
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_TABLE_PREFIX: wp_
      WORDPRESS_DB_NAME: wordpress-database        
      WORDPRESS_DB_USER: wordpress-user            
      WORDPRESS_DB_PASSWORD: wordpress-password
      WORDPRESS_SITE_URL: http://192.168.65.10
      WORDPRESS_HOME: http://192.168.65.10    
    depends_on:
      - db
      - pma
    networks:
      internal:
        ipv4_address: 172.30.9.3
      lan:
        ipv4_address: 192.168.65.10

networks:
  internal:
    ipam:
      config:
        - subnet: 172.30.9.0/29
  lan:
    name: lan
    driver: ipvlan
    driver_opts:
      parent: wlan0  # 替换为你的实际无线网卡名称
      ipvlan_mode: l2
    ipam:
      config:
        - subnet: "192.168.65.0/24"
          gateway: "192.168.65.1"

验证步骤

  1. 重启容器:docker-compose down && docker-compose up -d
  2. 在局域网内其他设备访问http://192.168.65.10,确认是否能正常打开WordPress页面。

内容的提问来源于stack exchange,提问作者jonathasborges1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:45:44