2014-09-08 7 views
4

Je travaille à la création d'un système de test d'unité automatisé qui utilisera docker pour tester les affectations individuelles d'élèves, écrites en Python, par rapport à un seul fichier de test unitaire.Créer automatiquement un conteneur docker et lancer un script python

J'ai créé un site Web où les étudiants peuvent télécharger leurs devoirs mais je suis un peu mais pas sûr de savoir comment obtenir l'automatisation avec Docker fonctionnant.

Le flux de travail ressemble à ceci:

  1. Un étudiant télécharge une mission pour le marquage
  2. C'est copié à un hôte Linux qui contient docker
  3. Le fichier se trouve ici alors qu'il attend à tester

donc, dire que j'avais vingt étudiants de télécharger des fichiers il py, nommé comme leur nombre d'étudiants uniques, pourrais-je:

  1. Créer un conteneur Docker qui exécute Ubuntu et Python
  2. Copiez le fichier étudiant et test unitaire dans ce récipient
  3. Exécutez le test unité
  4. sortie les résultats dans un fichier texte
  5. Copier ce texte dossier de nouveau à mon serveur Web pour afficher les résultats

Quelqu'un pourrait-il me diriger dans la bonne direction pour commencer avec cette automatisation? Je suis vraiment juste après l'aide du côté Docker des choses, pas sur la copie des fichiers de mon serveur web à l'hôte Docker.

Merci.

Répondre

5

Oui, il est possible d'utiliser Docker pour cela.

Le Dockerfile ressemblerait à ceci:

FROM ubuntu 
MAINTAINER xxx <[email protected]> 

# 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"] 

Maintenant, vous devez construire cette image avec docker build -t student_test ..

Pour démarrer le script et prenez la sortie, vous pouvez utiliser:

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

Le paramètre --volume est nécessaire, pour monter un script étudiant au point de montage défini. En outre, vous pouvez démarrer plusieurs conteneurs à la fois.

Tous les chemins sont relatifs au répertoire de travail actuel.

Questions connexes