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

时间:2019-03-13 08:51:59

标签: docker testing open-policy-agent

我有一个node.js服务,该服务存储访问策略,该访问策略在应用程序启动时发送到open policy agent服务。策略可以是睾丸,但要这样做,它们必须在不属于我的服务的开放策略代理环境中运行。构建我的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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

您可以使用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在构建映像期间执行,而CMDENTRYPOINT在从生成的映像启动容器期间执行。