windows docker compose参数不工作

windows docker compose参数不工作,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我试图在docker compose文件中使用args docker编写文件: version: '3' services: service1: image: test restart: always build: context: C:/ProgramData/ dockerfile: Dockerfile args: entry: 1 volumes: - C:/ProgramData/te

我试图在docker compose文件中使用args

docker编写文件:

version: '3'

services:
  service1:
    image: test
    restart: always
    build:
      context: C:/ProgramData/
      dockerfile: Dockerfile
      args:
        entry: 1
    volumes:
      - C:/ProgramData/test 
Dockerfile:

FROM microsoft/dotnet-framework:3.5
ARG entry
WORKDIR C:\\test
ADD ["/bin/x86/Release/","C:/test/"] 
ENTRYPOINT ["C:\\test\\file.exe",  ${entry}]

我不知道docker文件中的语法到底是如何工作的。如何将arg放入
入口点

您不能在
入口点
中使用
arg
(至少不能直接使用)。见:

ARG和ENV均未在ENTRYPOINT或CMD中展开。()但是,由于环境是作为环境的一部分传入的,因此它们在运行时可用,因此shell可以扩展它们。(这意味着您不能使用ENTRYPOINT或CMD的数组形式。)


我通过如下更改Dockerfile解决了此问题:

FROM microsoft/dotnet-framework:3.5

ARG ENTRY
ENV my_env=$ENTRY

#RUN echo %ENTRY%
#RUN echo %my_env%

WORKDIR C:\\test
ADD ["/bin/x86/Release/","C:/test/"]

ENTRYPOINT C:/test/file.exe %my_env%

我觉得你用得对。尝试在
ADD
ENTRYPOINT
指令之间添加
RUN echo${entry}
,以查看是否传递了OK(暂时用于debufg)。如果是这样的话,我将重点关注
file.exe
使用这样的参数做什么。有没有可能它已经起作用了?也许试着把变量it用双引号括起来……对不起@helvete,我忘了说我正在使用docker for Windows。在此环境中,类似于运行echo%entry%进行调试。参数具有正确的值。现在我主要关注
入口点
。正如@jannis所说,我正试图将
ARG
传递给
ENV
。但它不起作用