Docker 如何在装入卷的情况下启动osixia/openldap映像?

Docker 如何在装入卷的情况下启动osixia/openldap映像?,docker,openldap,docker-volume,Docker,Openldap,Docker Volume,我正在运行osixia/openldap和osixia/phpldapadmin卷,这些卷使用以下命令装载: docker run-p389:389-p636:636-name ldap服务-volume/data/slapd/database:/var/lib/ldap-volume/data/slapd/config:/etc/ldap/slapd.d-hostname ldap服务-detach-osixia/openldap:1.2.3-copy服务-loglevel调试 docker

我正在运行osixia/openldap和osixia/phpldapadmin卷,这些卷使用以下命令装载:

docker run-p389:389-p636:636-name ldap服务-volume/data/slapd/database:/var/lib/ldap-volume/data/slapd/config:/etc/ldap/slapd.d-hostname ldap服务-detach-osixia/openldap:1.2.3-copy服务-loglevel调试

docker run-name phpldapadmin服务-hostname phpldapadmin服务-link ldap服务:ldap主机-env phpldapadmin_ldap_HOSTS=ldap主机-detach-osixia/phpldapadmin:0.7.2

在第一次运行时,它会启动,但在使用相同的命令重新启动服务器时,我收到了错误

/容器/运行/启动/slapd失败,状态为34 而状态34指的是LDAP\u无效\u DN\u语法
无法找到此问题的解决方案。有什么帮助吗?

我已经解决了这个问题

如果查看文档,您会发现错误34表示无效DN

使用docker初始化ldap服务器时,如果启动脚本未找到ldap_BASE_DN环境变量,它将从ldap_DOMAIN生成一个环境变量,例如,ldap_DOMAIN=xxx.com将导致ldap_BASE_DN=dc=xxx,dc=com

但是,如果您停止您的容器,并在装载旧卷的情况下启动另一个容器,启动scirpt将不会从您的LDAP_域生成LDAP_BASE_DN,当您查看调试日志时,您会发现它是以空DN启动的。这就是它不能正常启动的原因


所以解决方案很明确:每次设置LDAP\u BASE\u DN,如果您使用docker compose文件,只需将其添加到您的环境部分。

他们发布了新的更新,但我也使用了您的解决方案,它对我有效