A Docker client for Python, designed to be fun and intuitive!
—
Docker swarm secret management for securely storing sensitive data like passwords, certificates, and API keys. Secrets are encrypted at rest and in transit, and are only accessible to services that explicitly request them.
Create secrets from files or data with labeling and template support.
def create(
name: str,
file: Optional[str] = None,
driver: Optional[str] = None,
labels: Optional[Dict[str, str]] = None,
template_driver: Optional[str] = None
) -> Secret:
"""
Create a secret object.
Parameters:
- name: Secret name
- file: Path to file containing secret data
- driver: Secret driver to use
- labels: Metadata labels for the secret
- template_driver: Template driver for processing
Returns:
Secret object
"""Inspect secret details including metadata and creation time.
def inspect(x: Union[str, List[str]]) -> Union[Secret, List[Secret]]:
"""
Inspect one or more secrets.
Parameters:
- x: Secret name(s) or ID(s)
Returns:
Secret object(s) with detailed information
"""List all secrets with optional filtering.
def list(filters: Sequence[str] = ()) -> List[Secret]:
"""
List all secrets with optional filters.
Parameters:
- filters: Filter conditions
Returns:
List of Secret objects
"""Remove secrets from the swarm.
def remove(x: Union[str, List[str]]) -> None:
"""
Remove one or more secrets.
Parameters:
- x: Secret name(s) or ID(s)
"""Usage Examples:
from python_on_whales import docker
# Create secret from file
secret = docker.secret.create(
"db-password",
file="./secrets/db_password.txt",
labels={"environment": "production", "type": "password"}
)
# Create secret from string data
import tempfile
with tempfile.NamedTemporaryFile(mode='w', delete=False) as f:
f.write("my-secret-api-key")
temp_file = f.name
api_secret = docker.secret.create("api-key", file=temp_file)
# List all secrets
secrets = docker.secret.list()
for secret in secrets:
print(f"Secret: {secret.spec.name} - Created: {secret.created_at}")
# Remove secret
docker.secret.remove("old-secret")class Secret:
id: str
created_at: datetime
updated_at: datetime
spec: SecretSpec
def remove(self) -> None:
"""Remove this secret."""
class SecretSpec:
name: str
labels: Dict[str, str]
driver: Optional[SecretDriver]
template_driver: Optional[SecretDriver]
class SecretDriver:
name: str
options: Dict[str, str]Install with Tessl CLI
npx tessl i tessl/pypi-python-on-whales