Запустите модульный тест mocha для docker-compose изображений - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть API в nodeJs, которые работают под микро-сервисами. Пока это работает, я хочу, чтобы у меня была возможность запустить юнит-тест (мокко) на этих изображениях.

докер-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

Они оба терпят неудачу, в этот момент тест пряжи запускается до того, как мой шлюз и серверы работают. Что я хочу сделать, так это запустить мои серверы, а затем запустить мой модульный тест в образах, но я новичок в докере и не знаю, как это реализовать.

тест пряжи:

"тест": "NODE_ENV = тест ./node_modules/.bin/mocha"

1 Ответ

0 голосов
/ 11 апреля 2019

Вы должны запустить mocha на одном хосте с вашим файлом docker-compose. Это также может быть образ докера (который можно запустить с помощью docker-compose, если хотите;)

Перед запуском теста пряжи вы должны запустить docker-compose с вашими сервисами.

  • Создание / использование Dockerfile с docker и docker-compose и узлом (для вашего случая)
  • скопируйте на него свои источники (docker-compose.yml и другие соответствующие источники)
  • запустить docker-compose up -d на нем
  • запустить тест пряжи на нем

Такие инструменты, как CloudFoundry или OpenStack, могут выполнять эту работу. Если вы работаете с CloudFoundry, я могу дать вам конкретные детали.

Для объединения нескольких команд используйте синтаксис unix-cli:

RUN  docker-compose up -d && \
     service1 && \
     yarn test
...