2016-02-18 29 views
7

Sto lavorando alla creazione di una griglia di selenio ancorata. Posso inviare i miei test python [eseguiti con pytest] da un contenitore pietoso [vedi sotto] allegandoci ad esso. Ma ho configurato un altro contenitore LAMP che controllerà pytest. Quindi voglio rendere autonomo il contenitore pytest, in esecuzione inattivo e in attesa di comandi dal contenitore LAMP.Eseguire py.test in un contenitore mobile come servizio

ho questo 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:[email protected]/user/project.git /project 

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

# 
CMD ["/bin/bash"] 

ho avviare manualmente il contenitore pytest [per lo sviluppo] con questo:

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

Il fatto è che ho finito lo sviluppo e voglio avere la pytest container lanciato da docker-compose e collegarlo ad altri contenitori [con link e volume]. Non riesco a farlo stare sveglio.

ho usato questo:

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

sbagliando di poco lavoro.

Quindi, all'interno del Dockerfile, dovrei utilizzare un CMD o ENTRYPOINT specifico?

Devo utilizzare alcuni command dal file docker-compose?

+0

l'esecuzione della finestra mobile ha '-dit' che è strano, o è o non entrambi, e sì il tuo Dockerfile dovrebbe avere una CMD o ENTRYPOINT – user2915097

+0

L'ho lanciato prima con -dit in modo da avere la console libera, e poi ho lanciato con componi un altro container che dipendeva dal primo in su. So che dovrebbe avere ma quale sarebbe il comando che lo contiene per continuare? –

+1

Quello che @ user2915097 significa, credo, è che non è necessario 'it', solo' -d' per eseguire il contenitore come processo daemon (background). '-it' è utile per eseguire interattivamente il contenitore e allocare un' tty'. – Auzias

risposta

1

Non sono esattamente sicuro di come si eseguono i test, ma penso di avere un caso d'uso simile. È possibile vedere come faccio questo nel mio Envoy project in cmd.sh e in a sample test.

Ecco come eseguo i miei test. Sto usando anche pytest, ma questo non è importante: 1. usa docker-compose per far apparire lo stack, senza i test 2. attendi che lo stack sia pronto per le richieste. per me questo significa sondaggio per 200 risposte 3. Esegui il contenitore di test separatamente, ma assicurati che utilizzi la stessa rete dello stack di composizione.

Questo può essere fatto in diversi modi. Puoi inserire tutto in uno script Bash e controllarlo dal tuo host.

Nel mio caso faccio tutto questo da un contenitore Python. È un po 'troppo complicato, ma l'idea è che ci sia un contenitore di test Python che l'host inizia. Quindi il contenitore stesso usa compose per riportare lo stack sull'host (dockerception). E poi nel contenitore di test eseguiamo il test di pytest. Al termine, compone lo stack e spinge verso l'alto il codice di ritorno.

Problemi correlati