2017-05-31 93 views
1

我有下面的Dockerfile。从码头中的CMD传递参数

FROM node:boron 

# Create app directory 
RUN mkdir -p /usr/src/akamai 
WORKDIR /usr/src/akamai 

# Install app dependencies 
COPY package.json /usr/src/akamai/ 
RUN npm install 

# Bundle app source 
COPY . /usr/src/akamai 

#EXPOSE 8080 
CMD ["node", "src/akamai-client.js", "purge", "https://www.example.com/main.css"] 

下面是我从CMD运行搬运工图像之后建立

docker run -it "akamaiapi" //It executes the CMD command as given in above Dockerfile. 

CMD [ “节点”, “SRC/Akamai的-client.js” “吹扫”命令, https://www.example.com/main.css] //我想从泊坞窗命令Dockerfile而不是硬编码的直接传递这两种说法,所以我多克尔运行的命令可能是这样的:

docker run -it "akamaiapi" queue 
docker run -it "akamaiapi" purge "https://www.example.com/main.css" 
docker run -it "akamaiapi" purge-status "b9f80d960602b9f80d960602b9f80d960602" 

回答

1

您可以通过combination of ENTRYPOINT and CMD来完成此操作。

  • ENTRYPOINT指定在容器启动时总是执行的命令。

  • CMD指定将被输入到ENTRYPOINT的参数。

所以,用Dockerfile

FROM node:boron 
... 

ENTRYPOINT ["node", "src/akamai-client.js"] 

CMD ["purge", "https://www.example.com/main.css"] 

运行的容器的默认行为:

docker run -it akamaiapi 

会像命令:

node src/akamai-client.js purge "https://www.example.com/main.css" 

如果你这样做:

docker run -it akamaiapi queue 

在容器中的底层执行将是这样的:

node src/akamai-client.js queue