page_title: Compose CLI reference page_description: Compose CLI reference page_keywords: fig, composition, compose, docker, orchestration, cli, reference # CLI reference Most commands are run against one or more services. If the service is not specified, the command will apply to all services. For full usage information, run `docker-compose [COMMAND] --help`. ## Commands ### build Builds or rebuilds services. Services are built once and then tagged as `project_service`, e.g., `composetest_db`. If you change a service's Dockerfile or the contents of its build directory, run `docker-compose build` to rebuild it. ### help Displays help and usage instructions for a command. ### kill Forces running containers to stop by sending a `SIGKILL` signal. Optionally the signal can be passed, for example: $ docker-compose kill -s SIGINT ### logs Displays log output from services. ### port Prints the public port for a port binding ### ps Lists containers. ### pull Pulls service images. ### rm Removes stopped service containers. ### run Runs a one-off command on a service. For example, $ docker-compose run web python manage.py shell will start the `web` service and then run `manage.py shell` in python. Note that by default, linked services will also be started, unless they are already running. One-off commands are started in new containers with the same configuration as a normal container for that service, so volumes, links, etc will all be created as expected. When using `run`, there are two differences from bringing up a container normally: 1. the command will be overridden with the one specified. So, if you run `docker-compose run web bash`, the container's web command (which could default to, e.g., `python app.py`) will be overridden to `bash` 2. by default no ports will be created in case they collide with already opened ports. Links are also created between one-off commands and the other containers which are part of that service. So, for example, you could run: $ docker-compose run db psql -h db -U docker This would open up an interactive PostgreSQL shell for the linked `db` container (which would get created or started as needed). If you do not want linked containers to start when running the one-off command, specify the `--no-deps` flag: $ docker-compose run --no-deps web python manage.py shell Similarly, if you do want the service's ports to be created and mapped to the host, specify the `--service-ports` flag: $ docker-compose run --service-ports web python manage.py shell ### scale Sets the number of containers to run for a service. Numbers are specified as arguments in the form `service=num`. For example: $ docker-compose scale web=2 worker=3 ### start Starts existing containers for a service. ### stop Stops running containers without removing them. They can be started again with `docker-compose start`. ### up Builds, (re)creates, starts, and attaches to containers for a service. Linked services will be started, unless they are already running. By default, `docker-compose up` will aggregate the output of each container and, when it exits, all containers will be stopped. Running `docker-compose up -d`, will start the containers in the background and leave them running. By default, if there are existing containers for a service, `docker-compose up` will stop and recreate them (preserving mounted volumes with [volumes-from]), so that changes in `docker-compose.yml` are picked up. If you do not want containers stopped and recreated, use `docker-compose up --no-recreate`. This will still start any stopped containers, if needed. [volumes-from]: http://docs.docker.io/en/latest/use/working_with_volumes/ ## Options ### --verbose Shows more output ### --version Prints version and exits ### -f, --file FILE Specifies an alternate Compose yaml file (default: `docker-compose.yml`) ### -p, --project-name NAME Specifies an alternate project name (default: current directory name) ## Environment Variables Several environment variables are available for you to configure Compose's behaviour. Variables starting with `DOCKER_` are the same as those used to configure the Docker command-line client. If you're using boot2docker, `$(boot2docker shellinit)` will set them to their correct values. ### COMPOSE\_PROJECT\_NAME Sets the project name, which is prepended to the name of every container started by Compose. Defaults to the `basename` of the current working directory. ### COMPOSE\_FILE Sets the path to the `docker-compose.yml` to use. Defaults to `docker-compose.yml` in the current working directory. ### DOCKER\_HOST Sets the URL of the docker daemon. As with the Docker client, defaults to `unix:///var/run/docker.sock`. ### DOCKER\_TLS\_VERIFY When set to anything other than an empty string, enables TLS communication with the daemon. ### DOCKER\_CERT\_PATH Configures the path to the `ca.pem`, `cert.pem`, and `key.pem` files used for TLS verification. Defaults to `~/.docker`. ## Compose Docs [Installing Compose](http://docs.docker.com/compose/install) [Intro & Overview]((http://docs.docker.com/compose/userguide) [Yaml file reference]((http://docs.docker.com/compose/yml)