Остановите зависимые сервисы после завершения испытаний с docker - PullRequest
0 голосов
/ 20 марта 2020

Я создал конфигурацию docker для запуска интеграционных тестов с docker -compose. Тем не менее, услуги, которые тесты зависят от того, чтобы остаться после завершения тестов. Я пробовал много способов запустить эту настройку, включая предложения в этом вопросе , но безрезультатно.

Службы могут быть успешно остановлены с помощью docker-compose down, однако я бы действительно как они будут остановлены автоматически при выходе из службы tests. Использование команды docker-compose run tests && docker-compose down работает, но я нахожу это довольно уродливым. Обходной путь должен был бы включить это в мои package.json сценарии. Тем не менее, мне интересно знать, может ли это быть достигнуто с помощью одной команды docker-compose, т. Е. Путем изменения моего docker-compose.yml или Dockerfile.

Можно найти проект и коммит здесь .

Содержимое docker-compose.yml:

version: "3.2"

services:
  app:
    build: .
    ports:
      - 3001:3001
    container_name: vyardage-app
    environment:
      - NODE_ENV=development
      - DATABASE_URL=postgresql://postgres:postgres@db:5432/postgres
    depends_on:
      - db

  test-app:
    build: .
    ports:
      - 3001:3001
    container_name: test-app
    environment:
      - NODE_ENV=test
      - DATABASE_URL=postgresql://postgres:postgres@test-db:5432/postgres
    depends_on:
      - test-db

  db:
    image: postgres:12.2
    container_name: vyardage-db
    environment:
      - PGDATA=/data
      - POSTGRES_PASSWORD=postgres
    volumes:
      - ./pg_data:/data
    ports:
      - 5432:5432

  test-db:
    image: postgres:12.2
    container_name: test-db
    environment:
      - POSTGRES_PASSWORD=postgres
    ports:
      - 5432:5432

  tests:
    build: ./e2e/
    container_name: vyardage-test
    environment:
      - CYPRESS_BASE_URL=http://test-app:3001
    depends_on:
      - test-app
    volumes:
      - ./e2e/cypress:/e2e/cypress

Содержимое Dockerfile в root:

FROM node:12.16

# Port can be configure via --build-arg.
ARG port=3001

# Install frontend dependencies.
WORKDIR /usr/src/app/client
COPY client/package.json client/package-lock.json ./
RUN npm ci

# Install backend dependencies.
WORKDIR /usr/src/app/server
COPY server/package.json server/package-lock.json ./
RUN npm ci

# Build frontend.
WORKDIR /usr/src/app
COPY client client/
WORKDIR /usr/src/app/client
RUN npm run build
RUN cp -r build/ ../server/public

# Build backend.
WORKDIR /usr/src/app
COPY server server/
WORKDIR /usr/src/app/server
RUN npm run build

EXPOSE $port

CMD npm start

Спасибо за ваше помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...