我正在使用以下命令运行 osixia / openldap和osixia / phpldapadmin (已安装卷):
docker run -p 389:389 -p 636:636 --name ldap-service --volume / data / slapd / database:/ var / lib / ldap --volume / data / slapd / config:/ etc / ldap / slapd.d-主机名ldap-service --detach osixia / openldap:1.2.3 --copy-service --loglevel debug
docker run --name phpldapadmin-service --hostname phpldapadmin-service --link ldap-service:ldap-host --env PHPLDAPADMIN_LDAP_HOSTS = ldap-host --detach osixia / phpldapadmin:0.7.2
它在第一次运行时启动,但是在使用相同命令重新启动服务器时出现错误
无法为此找到解决方案。有帮助吗?
答案 0 :(得分:0)
我已经解决了这个问题。
如果查看文档,则会发现错误34代表无效DN。
使用docker初始化ldap服务器时,如果启动脚本未找到LDAP_BASE_DN环境变量,它将从LDAP_DOMAIN生成一个,例如,LDAP_DOMAIN =“ xxx.com”将导致LDAP_BASE_DN =“ dc = xxx, dc = com”。
但是,如果您停止容器,然后启动另一个装有旧卷的容器,启动脚本将不会从LDAP_DOMAIN生成LDAP_BASE_DN,当您查看调试日志时,会发现它正在以空DN进行启动。这就是为什么它将无法正常启动的原因。
因此解决方案很明确:每次设置LDAP_BASE_DN,如果您使用docker-compose文件,只需将其添加到“环境”部分。