我对this提出了类似的问题,但略有不同,我也不知道该怎么做。
就像在接受的答案中说的那样,我知道我可以将命令传递给容器,但我的情况是这样的:
// Dockerfile
FROM node:8.9
LABEL maintainer="..."
ADD . /app
WORKDIR /app
RUN npm install --production
ARG PORT=10000
EXPOSE $PORT
CMD [ "npm", "start" ]
所以,我将仅生产依赖安装到容器中,这样我的容器更轻,但我无法在其中运行测试。
我是否需要另一个Dockerfile用于测试目的?
我认为这是一个棘手的解决方案。使用一个参数,但它看起来不是解决这个问题的好方法。解决方案是:
// docker-compose.yml
version: '3'
services:
api:
build:
context: .
args:
- PROD='--production'
- PORT
apitest:
build:
context: .
args:
- PORT
并使用Dockerfile中的PROD var
// Dockerfile
FROM node:8.9
LABEL maintainer="..."
ADD . /app
WORKDIR /app
RUN npm install $PROD
ARG PORT=10000
EXPOSE $PORT
CMD [ "npm", "start" ]
这样,只会在 api 服务中安装生产依赖项。
就像我说的,这真的很棘手,所以,是否有一个"官员"或"推荐"我不知道的方法?也许使用Dockerfile.test?