Working with services
spm provides several wrappers to help with starting / stopping and getting an overview of the current projects services. All services commands are prefixed with
services:. Once you have added some services you can list them:
spm services:list and then start one or more:
spm services:start service1 service2 service3 or start all of the services:
spm services:start all.
services:start is aliased to
If you have defined dependencies and have not specified either
-d to automatically start dependencies, or
-D to not start dependencies; you will be prompted if you wish to start the dependencies first or not. If you opt to start services, then all dependencies will be resolved and started first. You will not be prompted again after being asked the first time.
To get an overview of the current project services:
spm services:status. This will query Docker to get assorted data about all containers that match the preset compose name from the project config and display the information in a table. This information includes:
- running container name
- current status (up/down etc)
- the host if it has been set e.g. for traefik or the IP for the external DB connection
- external port(s)
- any volumes connected to the container
The status output is in a CLI table by default, however it can also be generated as:
- pipe separated, plain text
--format=csv|json|plain to get the desired output.
If SyncIt is installed and setup on a service; the current status will be output with the
spm status information. Note: this adds an amount of overhead and can take a few seconds to display for many running containers. To disable
syncit checks, add
To stop a service use:
spm services:stop service1 service2 or
spm services:stop all to stop all running services. Services that have dependencies will automatically cause dependent services to be stopped as well. For example: if you have a main data service that provides databases, and your apps depend on this; when you stop the service, then all the dependent services will be stopped first.
services:stop is aliased to
syncit is installed and there are active sync sessions, they will be stopped before the container the service is stopped.
The docker logs can be viewed by running:
spm services:log service or use the alias
-f to follow the log and use Ctrl+C to stop. This is the same output that you can get from:
docker-compose log <container-name>.
Rebuilding / cleaning the docker containers
If you encounter major issues with your containers or just want to reset to a completely clean state, either use:
docker system prune --all --volumes or
spm services:reset. The
spm command calls the same options under-the-hood.
For less drastic rebuilds, the
services:start command allows for:
--rebuild / -b- rebuild containers and then start
--refresh / -r- refresh and start
The difference between build and refresh is that refresh will force pull any new images as well as rebuild the container images. Use this if the upstream image has been updated and you need a new version instead of the cached version.
Copy files to/from containers
You can easily copy files to/from your running containers by using:
spm services:copy that is aliased as
cp. Note: that one side of this command must be a service name specified as
The format is:
spm services:copy source target, for example to copy a file from your downloads into the users-app container, configured as
spm services:copy ~/Downloads/file.txt users:/app/tmp/file.txt
Note: the copy command uses the service name; not the actual docker container name!
Note: the copy command uses the current working directory and not the services path when it is running. Run
spm services:copy -h for help and the current working folder.