Docker Контейнеры Pytest остаются активными после завершения процесса тестирования - PullRequest
1 голос
/ 07 мая 2020

Я установил свой проект django и теперь пытаюсь протестировать его с помощью pytest. Проблема с запуском pytest с моими контейнерами не убивает его в конце процесса. Итак, в конце дня я застрял с несколькими запущенными контейнерами из pytest и часто postgreSql проблемы с подключением.

Мой docker -compose файл:

version: '3'
services:
    license_server:
        build: .
        command: bash -c "python manage.py migrate && gunicorn LicenseServer.wsgi --reload --bind 0.0.0.0:8000"
        depends_on:
            - postgres
        volumes:
            - .:/code
        environment:
            DATABASE_NAME: "${DATABASE_NAME}"
            DATABASE_USER: "${DATABASE_USER}"
            DATABASE_PASSWORD: "${DATABASE_PASSWORD}"
            DATABASE_PORT: "${DATABASE_PORT}"
            DATABASE_HOST: "${DATABASE_HOST}"
        env_file: .env
        ports:
            - "8000:8000"
        restart: always
    postgres:
        build: ./postgres
        volumes:
          - ./postgres/postgres_data:/var/lib/postgresql/data/
        environment:
            POSTGRES_PASSWORD: postgres
            DATABASE_NAME: "${DATABASE_NAME}"
            DATABASE_USER: "${DATABASE_USER}"
            DATABASE_PASSWORD: "${DATABASE_PASSWORD}"
            DATABASE_PORT: "${DATABASE_PORT}"
            DATABASE_HOST: "${DATABASE_HOST}"
        command: "-p 8005"
        env_file: .env
        ports:
           - "127.0.0.1:8005:8005"
        restart: always
    nginx:
      image: nginx:latest
      container_name: nginx1
      ports:
        - "8001:80"
      volumes:
        - .:/code
        - ./config/nginx:/etc/nginx/conf.d
      depends_on:
        - license_server

То, что я хочу для достижения - это автоматическое закрытие контейнеров после завершения процесса тестирования.

введите описание изображения здесь

1 Ответ

2 голосов
/ 07 мая 2020

Когда у вас есть restart: always, они просто продолжат перезапуск, когда все процессы, порожденные командой, завершатся. Даже когда вы пытаетесь убить работающие контейнеры самостоятельно, они будут перезапускаться (что может быть неприятно). Попробуйте удалить restart: always из описаний ваших служб.

Для получения дополнительной информации проверьте ссылку docker -compose.yml

...