espanso/match/docker.yml
2026-05-19 00:33:39 +08:00

250 lines
5.8 KiB
YAML

# Docker Snippets for Espanso
matches:
# === Core Docker Commands ===
- trigger: "}dckr"
replace: "docker run $1$ $2$ $3$ $4$"
vars:
- name: image
type: choice
params:
values: ["$|$", "nginx", "postgres:15", "redis:alpine", "node:20"]
- name: mode
type: choice
params:
values: ["", "-d", "-it"]
- name: ports
type: choice
params:
values: ["", "-p 8080:80", "-p 3000:3000", "-p 5432:5432"]
- name: volumes
type: choice
params:
values:
["", "-v $(pwd):/app", "-v ~/data:/var/lib/postgresql/data", ""]
- trigger: "}dckb"
replace: "docker build -t $1$ $2$"
vars:
- name: tag
type: choice
params:
values: ["$|$", "my-app:v1", "my-app:latest"]
- name: context
type: choice
params:
values: [".", "/path/to/build/context", ""]
- trigger: "}dckp"
replace: "docker push $1$"
vars:
- name: image
type: choice
params:
values: ["$|$", "my-app:v1", "registry.example.com/my-app:latest"]
- trigger: "}dckpl"
replace: "docker pull $1$"
vars:
- name: image
type: choice
params:
values: ["$|$", "nginx:latest", "postgres:15-alpine"]
- trigger: "}dckps"
replace: "docker ps $1$"
vars:
- name: option
type: choice
params:
values:
["", "-a", "--format \"table {{.Names}}\t{{.Image}}\t{{.Ports}}\""]
- trigger: "}dckim"
replace: "docker images"
- trigger: "}dckstop"
replace: "docker stop $1$"
vars:
- name: target
type: choice
params:
values: ["$|$", "<container-name>", "$(docker ps -q)"]
- trigger: "}dckstopa"
replace: "docker stop $(docker ps -q)"
label: Stop ALL running containers (use with caution!)
- trigger: "}dckrm"
replace: "docker rm $1$"
vars:
- name: target
type: choice
params:
values: ["$|$", "<container-name>", "$(docker ps -aq)"]
- trigger: "}dckrmi"
replace: "docker rmi $1$"
vars:
- name: target
type: choice
params:
values: ["$|$", "<image-name>", "$(docker images -q)"]
- trigger: "}dcklog"
replace: "docker logs -f $1$"
vars:
- name: container
type: choice
params:
values: ["$|$", "<container-name>"]
- trigger: "}dckex"
replace: "docker exec -it $1$ $2$"
vars:
- name: container
type: choice
params:
values: ["$|$", "<container-name>"]
- name: command
type: choice
params:
values: ["sh", "bash", "/bin/bash", ""]
- trigger: "}dckprune"
replace: "docker system prune -f"
- trigger: "}dckpruneall"
replace: "docker system prune -a --volumes -f"
label: Remove ALL unused Docker resources (irreversible!)
- trigger: "}dckinspect"
replace: "docker inspect $1$"
vars:
- name: target
type: choice
params:
values: ["$|$", "<container-name>", "<image-name>"]
# === Docker Compose Commands ===
- trigger: "}dckcu"
replace: "docker compose up $1$ $2$"
vars:
- name: option
type: choice
params:
values: ["", "-d", "--build"]
- name: service
type: choice
params:
values: ["$|$", "", "web", "db", "redis"]
- trigger: "}dckcd"
replace: "docker compose down $1$"
vars:
- name: option
type: choice
params:
values: ["", "--volumes", "--rmi all"]
- trigger: "}dckcl"
replace: "docker compose logs -f $1$"
vars:
- name: service
type: choice
params:
values: ["$|$", "web", "db", ""]
- trigger: "}dckex"
replace: "docker compose exec $1$ $2$"
vars:
- name: service
type: choice
params:
values: ["$|$", "web", "db"]
- name: command
type: choice
params:
values: ["sh", "bash", "python manage.py migrate", ""]
- trigger: "}dckcb"
replace: "docker compose build $1$"
vars:
- name: service
type: choice
params:
values: ["$|$", "web", "db", ""]
# === Dockerfile Snippets ===
- trigger: "}dckfile"
replace: |
FROM $1$
WORKDIR /app
COPY . .
RUN $2$
EXPOSE 80
CMD ["$3$"]
vars:
- name: base_image
type: choice
params:
values: ["$|$", "alpine:latest", "ubuntu:22.04"]
- name: install_cmd
type: choice
params:
values:
[
"apt update && apt install -y <package>",
"apk add --no-cache <package>",
"pip install -r requirements.txt",
"",
]
- name: start_cmd
type: choice
params:
values:
["nginx -g 'daemon off;'", "python app.py", "node server.js", ""]
- trigger: "}dckfile-node"
replace: |
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
- trigger: "}dckfile-py"
replace: |
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]
# === Common Config Snippets ===
- trigger: "}dckignore"
replace: |
.git
node_modules
.env
*.log
Dockerfile
.dockerignore
dist/
build/
- trigger: "}dckenv"
replace: "ENV $1$=$2$"
vars:
- name: key
type: choice
params:
values: ["$|$", "NODE_ENV", "PORT", "DB_HOST", "DEBUG"]
- name: value
type: choice
params:
values: ["production", "3000", "localhost", "true", ""]