Intereting Posts

Автоматически создавать контейнер докеров и запускать скрипт python

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

Я создал веб-сайт, на котором студенты могут загружать свои задания, но я немного, но не уверен, как получить автоматизацию с помощью Docker.

Рабочий процесс выглядит примерно так:

  1. Студент загружает задание для маркировки
  2. Это копируется на хост linux, который содержит докеры
  3. Файл находится здесь, пока он ждет тестирования

Итак, скажите, что у меня было двадцать студентов, загружающих туда .py файлы, названные как их уникальные номера учеников, могу ли я:

  1. Создайте контейнер Docker, который запускает Ubuntu и Python
  2. Скопируйте файл студента и модульный тест в этот контейнер
  3. Запустите единичный тест
  4. Вывод результатов в виде текстового файла
  5. Скопируйте этот текстовый файл обратно на мой веб-сервер, чтобы отобразить результаты

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

Благодарю.

Да, для этого можно использовать Docker.

Dockerfile будет выглядеть так:

 FROM ubuntu MAINTAINER xxx <user@example.org> # update ubuntu repository RUN DEBIAN_FRONTEND=noninteractive apt-get -y update # install ubuntu packages RUN DEBIAN_FRONTEND=noninteractive apt-get -y install python python-pip # install python requirements RUN pip install ... # define a mount point VOLUME /student.py # define command for this image CMD ["python","/student.py"] 

Теперь вы должны создать это изображение с помощью docker build -t student_test . ,

Чтобы запустить скрипт и захватить вывод, вы можете использовать:

 docker run --volume /path/to/s12345.py:/student.py student_test > student_results_12345.txt`. 

Параметр --volume необходим, чтобы установить скрипт ученика в определенную точку монтирования. Кроме того, вы можете запускать сразу несколько контейнеров.

Все пути относятся к текущему рабочему каталогу.

Оформить заказ на следующий проект

Использует Heroku buildpacks для создания изображения докеров . Сумасшедшая, но аккуратная идея, если вы ее заработаете.