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

问题描述 投票:0回答:1

我使用以下命令运行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失败,状态为34
  • 而状态34指的是LDAP_INVALID_DN_SYNTAX

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

docker openldap docker-volume
1个回答
0
投票

我已经解决了这个问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.