gpt4 book ai didi

docker - 调用 docker-compose 时将参数传递给 docker 容器

转载 作者:行者123 更新时间:2023-12-04 16:41:53 30 4
gpt4 key购买 nike

我的目的是在为该容器调用 docker-compose 时能够将一些参数传递给该容器。

就像是

docker-compose up -d myContainer myArg1=hallo myArg2=world

我的 Docker 文件类似于:
FROM mcr.microsoft.com/dotnet/core/runtime:2.2 AS final
WORKDIR /app
COPY Myproj/bin/Debug/netcoreapp2.1 .
ENTRYPOINT ["dotnet", "myproj.dll", myArg1, myArg2]

docker-compose.yml 文件如下所示:
version: '3.4'

services:

myContainer:
image: ${DOCKER_REGISTRY-}myContainerImage
build:
context: ../..
dockerfile: MyProj/Dockerfile

首先我想知道这是否可行,其次我想知道如何去做

最佳答案

Docker 最终运行的命令行有两个“部分”,entrypointcommand .有对应的Docker Compose entrypoint: command: 指令来设置它们。他们的 interaction相当简单:它们只是连接在一起以生成单个命令行。

鉴于您所展示的内容,您可以在 Dockerfile 中编写

ENTRYPOINT ["dotnet", "myproj.dll"]

然后在您的 docker-compose.yml
command: myArg1=hallo myArg2=world

这将最终以这些论点启动该过程。

如果您希望在启动 Compose 堆栈时能够从命令行指定此项, Compose supports ${VARIABLE} references everywhere所以你可以写一些类似的东西
command: myArg1=${MY_ARG1:-hallo} world

然后使用类似的命令启动它
MY_ARG1=greetings docker-compose up

Docker 中一个非常典型的模式是使用 ENTRYPOINT对于执行一些首次设置的包装器脚本,然后使用 exec "$@" 作为主容器进程运行命令.入口点获取命令行参数作为参数,并且可以对它们做任何想做的事情,包括重新格式化它们或完全忽略它们,您也可以使用它来实现@Kevin 的 answer主要使用环境变量进行配置,但将其转换回 var=value类型选项。

关于docker - 调用 docker-compose 时将参数传递给 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59318485/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com