python – 在docker容器中运行py.test作为服务

前端之家收集整理的这篇文章主要介绍了python – 在docker容器中运行py.test作为服务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在设置一个dockerised selenium网格.我可以通过附加到pytest容器[见下面]发送我的python测试[用pytest运行].
但是我已经设置了另一个控制pytest的LAMP容器.
所以我想让pytest容器独立,运行空闲并等待来自LAMP容器的命令.

我有这个Dockerfile:

# Starting from base image
FROM ubuntu

#-----------------------------------------------------
# Set the Github personal token
ENV GH_TOKEN blablabla

# Install Python & pip
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y python python-pip python-dev && pip install --upgrade pip

# Install nano for #debugging
RUN apt-get install -y nano

# Install xvfb
RUN apt-get install -y xvfb

# Install GIT
RUN apt-get update -y && apt-get install git -y

# [in the / folder] 
RUN git clone https://$GH_TOKEN:x-oauth-basic@github.com/user/project.git /project

# Install dependencies via pip
WORKDIR /project
RUN pip install -r dependencies.txt
#-----------------------------------------------------

#
CMD ["/bin/bash"]

我手动启动pytest容器[用于开发]:

docker run -dit -v /project --name pytest repo/user:py

问题是我完成了开发,我希望从docker-compose启动pytest容器并将其连接到其他容器[带链接和卷].
我无法让它熬夜.

我用过这个:

pytest:
  image: repo/user:py
  volumes:
    - "/project"
  command: "/bin/bash tail -f /dev/null"

但没有工作.

那么,在Dockerfile中,我应该使用特定的CMD还是ENTRYPOINT?

我应该使用docker-compose文件中的一些命令吗?

最佳答案
我不确定你的测试是如何执行的,但我认为我有一个类似的用例.您可以在cmd.sha sample testEnvoy project中看到我是如何做到这一点的.

以下是我运行测试的方法.我也在使用pytest,但这并不重要:
1.使用docker-compose调出堆栈,不进行测试
2.等待堆栈为请求做好准备.对我来说,这意味着民意调查200响应
3.单独运行测试容器,但确保它使用与compose堆栈相同的网络.

这可以通过几种方式完成.您可以将所有内容放在Bash脚本中,并从主机控制所有内容.

在我的例子中,我从Python容器中完成所有这些操作.它有点包围,但想法是有一个主机启动的Python测试容器.然后容器本身使用compose将堆栈重新调回主机(dockerception).然后在测试容器中运行pytest测试.完成后,它会组合堆栈并推送返回代码.

猜你在找的Docker相关文章