我试着用args在一个码头撰写文件。
停靠-撰写文件:
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放进ENTRYPOINT
发布于 2018-06-27 06:25:44
我通过如下更改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%发布于 2018-06-26 12:31:36
您不能在ARG中使用ENTRYPOINT (至少不能直接使用)。请参阅How to pass ARG value to ENTRYPOINT?
ARG和ENV均未在切入点或CMD中扩张。(https://docs.docker.com/engine/reference/builder/#environment-replacement)但是,因为ENVs是作为环境的一部分传入的,所以它们在运行时是可用的,所以shell可以扩展它们。(这意味着不能使用ENTRYPOINT或CMD的数组形式。)
https://stackoverflow.com/questions/51039987
复制相似问题