How to override the CMD command in the docker run line

How you can replace the cdm based on the docker documentation:
https://docs.docker.com/reference/builder/#cmd

You can override the CMD command

  • How to create a docker image with passenger?
  • How to organize containers “horizontally” inside Kubernetes pods?
  • docker ubuntu image uname result
  • How to activate docker 1.12 in terminal without Moby the whale app on Mac
  • Can not deserialize instance of int out of VALUE_FALSE token while readng docker info client.infoCmd().exec();(docker java api version 0.10.4)
  • Spring Cloud Config Server Won't Serve from Local Filesystem
  • 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"]
    

    the docker run command is:

    docker run --name test test/test-backend
    

    I tried

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

    But the console say this error:

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

  • docker run python from container
  • Cannot access a Kubernetes postgresql service from the outside
  • PHP websites with Docker
  • Get memory limit in docker file?
  • PhpStorm doesn't read PHP configuration from Docker container
  • Docker - Call to undefined function mcrypt_get_block_size()
  • 3 Solutions collect form web for “How to override the CMD command in the docker run line”

    The right way to do it is deleting cmd [“…”]

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

    The Dockerfile uses CMD instruction which allows defaults for the container being executed.

    The below line will execute the script /srv/www/bin/gunicorn.sh as its already provide in CMD instruction in your Dockerfile as a default value, which internally gets executed as /bin/sh -c /srv/www/bin/gunicorn.sh during runtime.

     docker run --name test test/test-backend 
    

    Now say if you want to run some thing else, just add that at a end of the docker run. Now below line should run bash instead.

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

    Ref: Dockerfile Best Practices

    For those using docker-compose:

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

    In my case I’m reusing the same docker service to run the development and production builds of my react application:

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

    Will run my webpack.config.production.js and build the application to the dist. But yes, to the original question, you can override the CMD in the CLI.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.