When we run docker-compose up-d
command to run dockers using docker-compose.yml
file, it starts building images or pulling images from the registry. We can see each and every step of this command on the terminal.
I am trying to run this command from a python script. The command starts successfully but after the command, I do not have any idea of how much the process has been completed. Is there any way I can monitor the status of docker-compose up -d
command so that script can let the user (who is using the script) know how much the process has completed or if the docker-compose
command has failed due to some reasons.?
Thanks
CODE:
from pexpect import pxssh
session = pxssh.pxssh()
if not session.login(ip_address,<USERNAME>, <PASSWORD>):
print("SSH session failed on login")
print(str(session))
else:
print("SSH session login successfull")
session.sendline("sudo docker-compose up -d")
session.prompt()
resp = session.before
print(resp)
You can view docker compose
logs with following ways
docker compose up -d
to start all services in detached mode (-d)
(you won't see any logs in detached mode)docker compose logs -f -t
to attach yourself to the logs of all
running services, whereas -f
means you follow the log output and the
-t
option gives you nice timestamps (Docs)credit
EDIT: Docker Compose is now available as part of the core Docker CLI. docker-compose
is still supported for now but most documentation I have seen now refers to docker compose
as standard. See https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command for more.
What I do to debug small issues is to run:
docker-compose up {service_name}
This way I get to see the output for an individual service. If the service has a dependency you can always start multiple services like so:
docker-compose up {service_name1} {service_name2}
Additionally I use:
docker-compose logs -f -t {service_name1}
To see the logs of an already running service or alternatively:
docker logs -t -f {container_name}
Notice that the command above needs the container name and not the service name
This way you can make sure service by service that everything works as expected and then you can launch them all in detached mode as suggested in the other answers
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With