2015-10-06 13 views
5

Come è possibile sostituire il cdm sulla base della documentazione finestra mobile: https://docs.docker.com/reference/builder/#cmdCome ignorare il comando CMD nella riga di esecuzione finestra mobile

È possibile ignorare il comando CMD

Dockerfile:

RUN chmod +x /srv/www/bin/* & chmod -R 755 /srv/www/app 
RUN pip3 install -r /srv/www/app/pip-requirements.txt 
EXPOSE 80 
CMD ["/srv/www/bin/gunicorn.sh"] 

il comando di esecuzione della finestra mobile è:

docker run --name test test/test-backend 

Ho provato

docker run --name test test --cmd ["/srv/www/bin/gunicorn.sh"] 
docker run --name test test cmd ["/srv/www/bin/gunicorn.sh"] 

ma la console dicono questo errore:

System error: exec: "cmd": executable file not found in $PATH 

risposta

6

Il modo giusto per farlo sta cancellando cmd [ "..."]

docker run --name test test/test-backend /srv/www/bin/gunicorn.sh 
1

I Dockerfile usi CMD istruzione che consente i default per il contenitore in esecuzione.

La riga sotto eseguirà lo script /srv/www/bin/gunicorn.sh come già fornire in CMD istruzioni in Dockerfile come valore di default, che internamente viene eseguito come /bin/sh -c /srv/www/bin/gunicorn.sh durante il runtime.

docker run --name test test/test-backend 

Ora dicono, se si desidera eseguire qualche altra cosa, basta aggiungere che in un fine docker run. Ora sotto la riga dovrebbe essere eseguito bash invece.

docker run --name test test/test-backend /bin/bash 

Rif: Dockerfile Best Practices

0

Per coloro che utilizzano finestra mobile-composizione:

docker-compose run [your-service-name-here-from-docker-compose.yml] /srv/www/bin/gunicorn.sh

Nel mio caso sto riutilizzare lo stesso servizio finestra mobile per eseguire lo sviluppo e la produzione di build di mia reagire domanda:

docker-compose run my-react-app npm run build

eseguirà il mio webpack.config.production.js e creerò l'applicazione su dist. Ma sì, alla domanda originale, è possibile sovrascrivere il CMD nella CLI.

Problemi correlati