我在nodeJs中有一个api,它在微服务下运行。 到目前为止,一切正常,我接下来要做的就是能够在这些图像上运行单元测试(mocha)。
docker-compose.yml:
version: '3'
services: db:
image: mongo
ports:
- 27017:27017
db-seeds:
build: ./services/mongo-seeds
links:
- db
gateway:
build: ./services/gateway
ports:
- 4000:4000
depends_on:
- A
- B
- C
A:
build: ./services/A
ports:
- 4003:4000
depends_on:
- db
B:
build: ./services/B
ports:
- 4001:4000
depends_on:
- db
C:
build: ./services/C
ports:
- 4002:4000
depends_on:
- db
一个DockerFile:
FROM node:latest
COPY . /src
WORKDIR /src
RUN yarn
EXPOSE 4000
CMD yarn start
到目前为止,我所做的是制作另一个docker-compose文件,该文件将运行其他docker文件(DockerFile.test):
FROM node:latest
COPY . /src
WORKDIR /src
RUN yarn
EXPOSE 4000
CMD yarn test
也尝试过:
FROM node:latest
COPY . /src
WORKDIR /src
RUN yarn
EXPOSE 4000
CMD yarn start
RUN sleep 240
CMD yarn test
它们都失败,这时在我的网关和服务器启动之前就启动了纱线测试。我想要做的是启动服务器,然后在映像中运行我的单元测试,但是我是Docker的新手,并且缺乏如何实现它的知识。
纱线测试:
“ test”:“ NODE_ENV = test ./node_modules/.bin/mocha”
答案 0 :(得分:0)
您必须与docker-compose文件在同一主机上运行mocha。这也可以是docker映像(如果需要,可以以docker-compose开头;)
在运行纱线测试之前,必须与服务一起运行docker-compose。
诸如CloudFoundry或OpenStack之类的工具可能会完成此工作。 如果您使用CloudFoundry,我可以为您提供详细信息。
要连接多个命令,请使用unix-cli语法:
RUN docker-compose up -d && \
service1 && \
yarn test