我使用以下命令运行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
在第一次运行时,它启动但在使用相同的命令重新启动服务器时,我收到了错误
无法找到解决方案。有帮助吗?
我已经解决了这个问题。
如果您查看该文档,您会发现错误34代表无效的DN。
使用docker初始化ldap服务器时,如果启动脚本未找到LDAP_BASE_DN环境变量,它将从LDAP_DOMAIN生成一个,例如,LDAP_DOMAIN =“xxx.com”将导致LDAP_BASE_DN =“dc = xxx,dc = com ”。
但是如果你停止你的容器,并启动另一个装有旧卷的容器,启动scirpt将不会从你的LDAP_DOMAIN生成LDAP_BASE_DN,当你查看调试日志时,你会发现它启动了一个空的DN。这正是它无法正常启动的原因。
因此解决方案很明确:每次设置LDAP_BASE_DN,如果您使用docker-compose文件,只需将其添加到“环境”部分即可。