docker — правило для Cursor: что делает и как установить
Набор инструкций для Cursor по сборке безопасных production-образов Docker. Помогает писать чистые Dockerfile и docker-compose без root-доступа и лишних слоёв.
.cursor/rules/docker.mdcЧто делает docker
Правило активируется при работе с файлами Dockerfile, docker-compose*.yml, docker-compose*.yaml и .dockerignore. Cursor начинает требовать фиксацию версий базовых образов вроде node:20.11-alpine3.19 вместо тега :latest. Для компилируемых языков правило предписывает использовать multi-stage сборки. Команды RUN объединяются через &&, а кэширование слоёв выстраивается по цепочке: копирование манифестов зависимостей, их установка и только потом перенос исходного кода.
В файлах запрещается использовать команду ADD, если достаточно COPY. Секреты нельзя передавать через аргументы сборки или слои образа, а файлы .env должны отсекаться через .dockerignore. Перед директивой CMD обязательно объявляется непривилегированный пользователь через USER. Для проверки контейнеров на уязвимости в CI правило направляет на сканеры вроде docker scout или trivy.
Логирование разрешено только в stdout и stderr. Никаких записей в файлы внутри контейнера.
Какие задачи решает
- заблокировать запуск контейнеров под root-пользователем в проде
- настроить кэширование слоёв при установке зависимостей в Dockerfile
- составить
.dockerignoreдля исключения.env,node_modulesи тестов - перевести конфигурацию сервисов на custom bridge-сети вместо host-режима
Примеры запросов агенту
- Напиши production-ready
Dockerfileдля сборки Go-сервиса с multi-stage билдом. - Проверь мой
docker-compose.ymlна соответствие правилам безопасности и сетям. - Сделай
.dockerignoreдля проекта на Node.js, чтобы исключить секреты и логи.
Как установить docker
Вручную: положить файлы
.cursor/rules/docker.mdcВо frontmatter: description, globs, alwaysApply
Вручную: положить файлы
.claude/rules/docker.mdПоле paths во frontmatter ограничивает файлы: globs из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.github/instructions/docker.instructions.mdПоле applyTo задаёт, к каким файлам применять: globs из источника → applyTo
Вручную: положить файлы
.devin/rules/docker.mdВручную: положить файлы
.clinerules/docker.mdПо шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules
Вопросы о docker
Как установить правило docker в Cursor?
Создайте файл .cursor/rules/docker.mdc в корне репозитория и добавьте в него содержимое правила. Cursor будет применять его при открытии файлов Dockerfile и compose.
Что запрещает это правило в Dockerfile?
Оно запрещает тег :latest, запуск процессов под пользователем root и директиву ADD вместо COPY. Секреты в слоях образов также под запретом.
Как настраивается работа с томами и сетями?
Для постоянных данных правило требует использовать именованные тома, запрещая bind mounts в продакшене. Сети должны быть изолированными bridge, без режима host.
Исходный текст
docker.mdc · CC0-1.0
--- description: "Docker production rules. Pinned versions, multi-stage builds, non-root user, minimal attack surface." globs: Dockerfile, Dockerfile.*, docker-compose*.yml, docker-compose*.yaml, .dockerignore alwaysApply: false --- # Docker Rules Expert Docker practitioner. Minimal, secure, reproducible images. ## Dockerfile - Pin versions: FROM node:20.11-alpine3.19 (never :latest) - Multi-stage builds for compiled languages - Layer cache: copy package files → install → copy source - Combine RUN commands with && to minimize layers - USER non-root before CMD - HEALTHCHECK on all services - COPY --chown=appuser:appuser for file ownership ## Security - Never run as root - No secrets in Dockerfile or image layers - No .env files copied into image - Scan with docker scout or trivy in CI ## .dockerignore - Always present: node_modules, .git, *.log, .env*, test files ## Volumes - Named volumes for persistence - Bind mounts for dev only, never production ## Networking - Custom bridge networks, not host networking - Reference services by name in compose ## Logging - Always stdout/stderr — never log to files inside container ## Forbidden - No :latest tags in production - No ADD when COPY works - No root user in production - No secrets in build args or image layers
© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules