如何启动 osixia/openldap 已安装卷的映像?

how to start osixia/openldap image with volumes mounted?

我正在 运行ning 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

无法为此找到解决方案。有帮助吗?

我已经解决了这个问题。

如果你看文档,你会发现错误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 文件,只需将它添加到您的“环境”部分。