在docker运行时覆盖docker cmd

时间:2019-06-03 04:52:40

标签: docker dockerfile

我正在码头化节点应用程序。

这是我正在使用的Dockerfile:

FROM node:10-slim

# Sets environment variable
ENV NODE_ENV production

# Sets work directory
WORKDIR /usr/src/app

# Copy package.json
COPY ["package.json", "./"]

# Installs dependencies 
RUN npm install

# Copy working files
COPY . /usr/src/app

EXPOSE 80

# Starts run command
CMD npm start

但是,既然我有几个.env文件,我想传递一个参数来选择要使用的env文件。

npm start -- --env="test" 

所以我最终想要的是

docker run -p 8080:8080 test/nodeapp:1.0 -- -evn="test" 

我应如何在docker run上覆盖CMD

1 个答案:

答案 0 :(得分:1)

请参见this

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

当docker运行时,您可以覆盖COMMAND,因此对于您而言,如果问题中的命令正确,则为:

docker run -p 8080:8080 test/nodeapp:1.0 npm start -- --env="test"

如果您在评论中仍需要-- --env="test",则需要使用entrypoint,然后查看this