python - Docker Pytest容器在完成测试过程后仍处于启动状态

标签 python django docker docker-compose pytest

我已经设置了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

我要实现的是在测试过程完成后自动关闭容器。
enter image description here

最佳答案

当您拥有restart: always时,它们将仅在退出该命令产生的所有进程后才继续重新启动。即使您试图自己杀死正在运行的容器,它们也会趋于重新启动(可能会造成麻烦)。尝试从服务描述中删除restart: always

有关更多信息,请检查docker-compose.yml reference

关于python - Docker Pytest容器在完成测试过程后仍处于启动状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61652003/

相关文章:

python - 解释 scikit 中的数据集

python - 从数组中选择最小的 n 个元素的最快方法是什么?

jquery - 模式中的 Bootstrap 表单无法解析文件

django - 如何修复 : "RuntimeWarning: Model <my_model> was already registered."

django:加速模板渲染性能的指南

docker - 为什么不存在的镜像在Kubernetes部署中起作用

mysql - 无法连接到在docker中运行的MySQL

docker - Docker容器即使在退出命令后仍显示正在运行

python - Django - 在 'INSTALLED APPS' 中添加应用程序名称时出现值错误

python - Django 的 ORM 有什么限制?