tux.cli.docker
¶
Docker commands for the Tux CLI.
Functions:
Name | Description |
---|---|
build | Build Docker images. |
up | Start Docker services. |
down | Stop Docker services. |
logs | Show logs for a Docker service. |
ps | List running Docker containers. |
exec_cmd | Execute a command inside a running service container. |
Functions¶
_get_compose_base_cmd() -> list[str]
¶
Get the base docker compose command with appropriate -f flags.
build() -> int
¶
up(detach: bool, build: bool) -> int
¶
Start Docker services.
Runs docker compose up
. Can optionally build images first with --build.
Source code in tux/cli/docker.py
Python
@command_registration_decorator(docker_group, name="up")
@click.option("-d", "--detach", is_flag=True, help="Run containers in the background.")
@click.option("--build", is_flag=True, help="Build images before starting containers.")
def up(detach: bool, build: bool) -> int:
"""Start Docker services.
Runs `docker compose up`.
Can optionally build images first with --build.
"""
cmd = [*_get_compose_base_cmd(), "up"]
if build:
cmd.append("--build")
if detach:
cmd.append("-d")
return run_command(cmd)
down() -> int
¶
logs(follow: bool, service: str) -> int
¶
Show logs for a Docker service.
Runs docker compose logs [service]
.
Source code in tux/cli/docker.py
Python
@command_registration_decorator(docker_group, name="logs")
@click.option("-f", "--follow", is_flag=True, help="Follow log output.")
@click.argument("service", default="tux", required=False)
def logs(follow: bool, service: str) -> int:
"""Show logs for a Docker service.
Runs `docker compose logs [service]`.
"""
cmd = [*_get_compose_base_cmd(), "logs"]
if follow:
cmd.append("-f")
cmd.append(service)
return run_command(cmd)
ps() -> int
¶
exec_cmd(service: str, command: tuple[str, ...]) -> int
¶
Execute a command inside a running service container.
Runs docker compose exec [service] [command]
.
Source code in tux/cli/docker.py
Python
@command_registration_decorator(docker_group, name="exec")
@click.argument("service", default="tux", required=False)
@click.argument("command", nargs=-1, required=True)
def exec_cmd(service: str, command: tuple[str, ...]) -> int:
"""Execute a command inside a running service container.
Runs `docker compose exec [service] [command]`.
"""
if not command:
logger.error("Error: No command provided to execute.")
return 1
cmd = [*_get_compose_base_cmd(), "exec", service, *command]
return run_command(cmd)