是否可以通过docker compose传递"docker build"标志


  • 我有一个DockerfileDockerfile.foo
  • 我使用docker run -p 8000:8000 --cap-add=IPC_LOCK johndoe/repo:latest运行Dockerfile.foo

到目前为止一切都很好。

我的问题是,运行Dockerfile.foo需要--cap-add=IPC_LOCK(据我所知,这是不可能的(。

但是,我希望将Dockerfile.foo作为dockercompose.yaml的一部分运行,因为我还有一些其他服务使用Dockerfile.foo生成的容器。问题是,我不知道如何(1(使用johndoe/repo:latest映像,或(2(在dockercompose.yaml中使用Dockerfile.foo,并--cap-add=IPC_LOCK标志传递给映像或Dockerfile(取决于允许我使用的那个(。

我想做的事情有可能吗?如果没有,是否有建议/推荐的方法来实现我的目标?

您可以在docker compose文件中使用cap_add子句:

cap_add:
- IPC_LOCK

所以你的dockercompose.yaml看起来像:

version: "3.9"
services:
johndoe:
build: /path/to/dir
cap_add:
- IPC_LOCK

当您运行docker compose up时,johndoe服务将使用从Dockerfile构建的映像,并运行带有--cap-add标志的容器。

还要注意,Dockerfile没有扩展名。

最新更新