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

时间:2019-02-08 13:57:51

标签: docker openldap docker-volume

我正在使用以下命令运行 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

它在第一次运行时启动,但是在使用相同命令重新启动服务器时出现错误

  • / container / run / startup / slapd失败,状态为34
  • 状态34表示LDAP_INVALID_DN_SYNTAX

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

1 个答案:

答案 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文件,只需将其添加到“环境”部分。