是否可以使用docker临时创建测试环境?

是否可以使用docker临时创建测试环境?,docker,testing,open-policy-agent,Docker,Testing,Open Policy Agent,我有一个node.js服务,它存储应用程序启动时发送给服务的访问策略。可以测试策略,但要做到这一点,它们需要在开放策略代理环境中运行,开放策略代理环境不是我服务的一部分。在构建我的node.js服务docker映像时,是否有办法运行这些测试?因此,除非所有测试都通过,否则映像不会生成 因此,dockerfile可以如下所示: FROM openpolicyagent/opa:latest CMD ["test"] # somehow check that all tests pass and i

我有一个node.js服务,它存储应用程序启动时发送给服务的访问策略。可以测试策略,但要做到这一点,它们需要在开放策略代理环境中运行,开放策略代理环境不是我服务的一部分。在构建我的node.js服务docker映像时,是否有办法运行这些测试?因此,除非所有测试都通过,否则映像不会生成

因此,dockerfile可以如下所示:

FROM openpolicyagent/opa:latest
CMD ["test"]
# somehow check that all tests pass and if not return an error
FROM node:8
# node-related stuff
您可以对所需的步骤使用RUN语句,例如:

FROM <some_base_image>

RUN mkdir /tests
WORKDIR /tests
COPY ./tests .    
RUN npm install && npm run build && npm test

RUN mkdir /src
WORKDIR /src
COPY ./src .    
RUN npm install && npm run build

CMD npm start

注意:RUN在构建映像期间执行,而CMD和ENTRYPOINT在从构建映像启动容器期间执行。

您可以创建一个构建管道,在其中分别构建节点应用程序和特使+OPA代理,然后创建另一个独立的包含访问规则测试并使用Cypress。然后,构建管道可以无条件地将新版本安装到DEV环境中,但需要单独的测试项目通过,直到它部署到STAGE和PROD环境中