5.5 KiB
page_title: Compose CLI reference page_description: Compose CLI reference page_keywords: fig, composition, compose, docker, orchestration, cli, reference
CLI reference
Most Docker Compose 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.
restart
Restarts services.
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:
-
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 tobash
-
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.
Options
--verbose
Shows more output
-v, --version
Prints version and exits
-f, --file FILE
Specify what file to read configuration from. If not provided, Compose will look
for docker-compose.yml
in the current working directory, and then each parent
directory successively, until found.
-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
Specify what file to read configuration from. If not provided, Compose will look
for docker-compose.yml
in the current working directory, and then each parent
directory successively, until found.
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
.