我使用以下命令运行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 --hostname 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在第一次运行时,它会启动,但是在使用相同的命令重新启动服务器时,我得到了错误。
- /container/run/startup/slapd failed with status 34
- whereas status 34 refers to LDAP_INVALID_DN_SYNTAX无法找到解决这个问题的方法。有什么帮助吗?
发布于 2019-03-05 17:26:20
我已经解决了这个问题。
如果您查看文档,您将发现错误34表示无效的DN。
当您使用docker初始化ldap服务器时,如果启动脚本没有找到您的LDAP_BASE_DN环境变量,它将从LDAP_DOMAIN生成一个变量,例如,LDAP_DOMAIN="xxx.com"将导致LDAP_BASE_DN="dc=xxx,dc=com"。
但是,如果您停止您的容器,并启动另一个安装了旧卷的容器,那么启动scirpt将不会从您的LDAP_BASE_DN中生成LDAP_DOMAIN,当您查看调试日志时,您会发现它是用一个空的DN启动的。这就是为什么它不能正常启动的原因。
因此,解决方案是明确的:每次设置LDAP_BASE_DN,如果您使用一个坞-撰写文件,只需将它添加到您的“环境”部分。
https://stackoverflow.com/questions/54593959
复制相似问题