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

Docker部署的Codeigniter应用无法通过本地IP访问

问题排查:本地IP无法访问Docker部署的Codeigniter应用

我用docker-compose搭建了Codeigniter/PHP应用,通过localhost:8893或127.0.0.1:8893可正常访问,但使用本地IP192.168.100.96:8893访问时,页面持续加载无响应。

docker-compose.yaml配置

version: '3.7'
services:
  test-webserver:
    image: thecodingmachine/php:8.0-v4-apache-node16
    container_name: test-webserver
    working_dir: /var/www/html
    environment:
#      PHP_EXTENSIONS: apcu pdo_mysql opcache redis zip gd yaml exif xdebug
      PHP_EXTENSIONS: opcache redis zip gd yaml exif xdebug
      PHP_EXTENSION_GD: 1
      PHP_EXTENSION_MYSQLI: 1
      APACHE_DOCUMENT_ROOT: /var/www/html/
      APACHE_RUN_GROUP: www-data # use www-data user in container.. which is also used on most webservers for deployer
      APACHE_RUN_USER: www-data
      PHP_EXTENSION_XDEBUG: 1
    depends_on:
      - test-mariadb
    volumes:
      - ./:/var/www/html
      - ~/.ssh:/root/.ssh
    stdin_open: true
    tty: true
    expose:
      - "8893"
    ports:
      - "8893:80"
    networks:
      - test.network
  test-mariadb:
    container_name: test-mariadb
    image: mariadb:10.3.36
    networks:
      - test.network
    restart: always
    environment:
      - MARIADB_ROOT_PASSWORD=test123
    volumes:
      - ../mariadb:/var/lib/mysql
    expose:
      - "40000"
    ports:
      - "40000:3306"
  test-phpmyadmin:
    container_name: test-phpmyadmin
    image: phpmyadmin/phpmyadmin:latest
    networks:
      - test.network
    restart: always
    environment:
      - PMA_HOST=test-mariadb
      - PMA_PORT=3306
      - PMA_USER=root
      - PMA_PASSWORD=test123
      - UPLOAD_LIMIT=2048M
    expose:
      - "40001"
    ports:
      - "40001:80"
networks:
  test.network:
    driver: bridge
    name: test.network
    external: true

环境变量配置

APP_DB_HOSTNAME=test-mariadb
APP_DB_USERNAME=root
APP_DB_PASSWORD=test123
APP_DB_NAME=my_test_db
APP_DB_PORT=3306
APP_DB_PREFIX=tbl

排查方向

  • 检查防火墙/安全组规则
    确认本地机器的防火墙(Windows防火墙、Linux ufw/iptables等)允许8893端口的入站连接。确保朋友设备和你的机器在同一局域网内,端口未被拦截。

  • 修正Apache监听地址
    容器内Apache默认可能仅绑定127.0.0.1,导致只能本地回环访问。在test-webserver服务的环境变量中添加APACHE_LISTEN_ADDRESS=0.0.0.0,让Apache监听所有网卡。

  • 调整Codeigniter base_url配置
    查看Codeigniter的config.php,如果$config['base_url']被固定设置为localhost或127.0.0.1,会导致外部访问异常。可修改为动态获取:

    $config['base_url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/';
    

    或直接设置为http://192.168.100.96:8893/(IP固定时)。

  • 验证宿主机端口监听状态
    在宿主机执行netstat -tulpn | grep 8893,确认端口是否监听在0.0.0.0:8893,而非仅127.0.0.1:8893。

  • 测试局域网连通性
    让朋友在同一局域网内ping你的本地IP192.168.100.96,确认网络可达。若ping不通,先排查路由器设置、设备网段一致性等局域网基础问题。

内容的提问来源于stack exchange,提问作者Faizan Anwer Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:40:22