windows docker compose参数不工作
我试图在docker compose文件中使用args docker编写文件: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
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
。但它不起作用