Docker Compose部署OpenLDAP与phpLDAPAdmin异常排查求助
OpenLDAP & phpLDAPAdmin 部署问题排查方案
核心问题定位
OpenLDAP持续重启的根源是配置目录/etc/ldap/slapd.d为空,但数据库目录/var/lib/ldap非空,导致slapd启动时无法加载必要配置,直接退出(状态码1)。phpLDAPAdmin的连接错误是LDAP服务未正常运行的连锁反应。
解决方案步骤
1. 重置LDAP数据(适合首次部署或可丢弃现有数据场景)
如果不需要保留现有LDAP数据,直接清理关联卷并重新部署:
# 停止并删除容器及关联数据卷 docker-compose down -v # 重新启动服务 docker-compose up -d
此操作会重建配置目录和数据库目录,镜像会自动初始化默认配置。
2. 保留现有数据修复配置(需保留已有LDAP数据场景)
如果要保留/var/lib/ldap中的数据,需要手动生成配置目录:
临时启动LDAP容器,挂载现有数据卷:
docker run -it --rm \ -v $(pwd)/ldap_data:/var/lib/ldap \ -v $(pwd)/ldap_config:/etc/ldap/slapd.d \ osixia/openldap:1.5.0 \ bash(注:如果用命名卷,把
$(pwd)/ldap_data换成卷名,比如ldap_data)在临时容器内执行以下命令修复配置:
# 导出现有数据的配置信息 slapcat -n 0 -l /tmp/config.ldif # 清空空的配置目录 rm -rf /etc/ldap/slapd.d/* # 导入配置到slapd.d目录 slapadd -n 0 -F /etc/ldap/slapd.d -l /tmp/config.ldif # 修正目录权限 chown -R openldap:openldap /etc/ldap/slapd.d退出临时容器,重新启动docker-compose服务:
docker-compose up -d
3. phpLDAPAdmin连接问题修复
等LDAP服务稳定运行后,检查以下配置:
- 确认
docker-compose.yml中phpLDAPAdmin的PHPLDAPADMIN_LDAP_HOSTS设置为LDAP服务的容器名(比如openldap),确保容器间网络连通。 - 登录LDAP的正确DN格式:默认管理员DN为
cn=admin,dc=coolstuff-enterprise,dc=org(而非直接使用base DN),密码为部署时设置的LDAP_ADMIN_PASSWORD。
验证配置示例
确保你的docker-compose.yml包含必要环境变量:
version: '3' services: openldap: image: osixia/openldap:1.5.0 container_name: openldap environment: LDAP_DOMAIN: coolstuff-enterprise.org LDAP_ADMIN_PASSWORD: your_admin_password volumes: - ldap_data:/var/lib/ldap - ldap_config:/etc/ldap/slapd.d ports: - "389:389" - "636:636" restart: unless-stopped phpldapadmin: image: osixia/phpldapadmin:0.9.0 container_name: phpldapadmin environment: PHPLDAPADMIN_LDAP_HOSTS: openldap PHPLDAPADMIN_HTTPS: "false" ports: - "8080:80" depends_on: - openldap restart: unless-stopped volumes: ldap_data: ldap_config:
内容的提问来源于stack exchange,提问作者scruffycoder86
相关产品推荐
相关产品推荐

