如何在 Dockerfile 中停止 slapd?

How to stop slapd within Dockerfile?

我尝试使用 slapdDockerfile 构建自己的 Docker 容器。

slapd 安装正常,然后我需要停止 slapd 以添加自定义数据库。
为此,我需要在非 运行ning slapd 上执行 运行 slapadd 命令。然而 RUN pkill slapd 产生以下错误:

Step 7 : RUN service slapd start ; ldapadd -Y EXTERNAL -H ldapi:/// -f xxx.ldif
---> Using cache
---> 53e1e1a59517
Step 8 : RUN pkill slapd
---> Running in efc0058a4bfe
The command '/bin/sh -c pkill slapd' returned a non-zero code: 1

你知道我为什么以及如何正确停止 slapdDockefile 吗?

您将 slapd 操作拆分为多个 RUN 指令:这不切实际,因为每个 RUN 将创建一个中间容器,并将该容器作为中间图像提交。

最好将您的所有操作集中在一个脚本中,首先您 COPY 在您的图像中,然后 RUN 该脚本。
这样,在一个中间容器内,您可以 start/stop slapd,添加您的 ldif 文件,进行其他测试, 中间容器停止并作为新的中间图像提交之前。