如何在 Dockerfile 中停止 slapd?
How to stop slapd within Dockerfile?
我尝试使用 slapd
和 Dockerfile
构建自己的 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
你知道我为什么以及如何正确停止 slapd
和 Dockefile
吗?
您将 slapd 操作拆分为多个 RUN
指令:这不切实际,因为每个 RUN
将创建一个中间容器,并将该容器作为中间图像提交。
最好将您的所有操作集中在一个脚本中,首先您 COPY
在您的图像中,然后 RUN
该脚本。
这样,在一个中间容器内,您可以 start/stop slapd,添加您的 ldif 文件,进行其他测试, 在 中间容器停止并作为新的中间图像提交之前。
我尝试使用 slapd
和 Dockerfile
构建自己的 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
你知道我为什么以及如何正确停止 slapd
和 Dockefile
吗?
您将 slapd 操作拆分为多个 RUN
指令:这不切实际,因为每个 RUN
将创建一个中间容器,并将该容器作为中间图像提交。
最好将您的所有操作集中在一个脚本中,首先您 COPY
在您的图像中,然后 RUN
该脚本。
这样,在一个中间容器内,您可以 start/stop slapd,添加您的 ldif 文件,进行其他测试, 在 中间容器停止并作为新的中间图像提交之前。