Azure dockerfile中的蓝铜矿块存储

Azure dockerfile中的蓝铜矿块存储,azure,docker,Azure,Docker,我正在Docker中创建我的开发环境,由于Azure存储服务的需要,我想使用Azurite作为本地Azure存储服务 当我试着去做 RUN azurite-blob & 它只是运行,此命令不起作用。我还尝试将此命令作为脚本进行文件和运行,但结果是一样的 当我在docker容器上运行相同的命令时,它会正常启动,并为azurite创建各种目录 因此,问题是如何使azurite在Dockerfile的后台工作?您不能在Dockerfile的构建步骤中生成在后台工作的命令,因为每个步骤都将在单

我正在Docker中创建我的开发环境,由于Azure存储服务的需要,我想使用Azurite作为本地Azure存储服务

当我试着去做

RUN azurite-blob &
它只是运行,此命令不起作用。我还尝试将此命令作为脚本进行文件和运行,但结果是一样的

当我在docker容器上运行相同的命令时,它会正常启动,并为azurite创建各种目录


因此,问题是如何使azurite在Dockerfile的后台工作?

您不能在Dockerfile的构建步骤中生成在后台工作的命令,因为每个步骤都将在单独的层中运行,并在步骤完成时删除

您可以使用:

  • ENTRYPOINT
    CMD
    来实现这一点(即在运行时运行它而不是构建)
更新

根据您的评论:

创建
script.sh

#!/bin/bash

/usr/bin/azurite &

exec "$@"
您需要首先在Dockerfile中将其设置为可执行文件:

COPY script.sh script.sh
RUN chmod +x script.sh

然后您可以使用
bash
作为交互模式的命令

也许我没有提到我以交互方式运行容器,所以您不必在PC上安装任何东西,只需安装docker。当我使用
ENTRYPOINT[“/usr/bin/azurite”]
时,它会运行,但我不再能够在容器中使用bash。当我使用
[“/usr/bin/azurite”、“&”]
时,它仍然不会在后台运行。可能是因为CMD或ENTRYPOINT覆盖了交互模式?不确定,但我使用了许多组合,仍然没有解决我的问题。它现在起作用了,谢谢。我在dockerfile中添加了
ENTRYPOINT[“/azurite.sh”]
,而且我还必须运行
docker run-it[…]/bin/bash才能使它工作