소스 정보
- 저장소
- tomevault-io/skills-registry
- 최근 소스 활동
- 2026년 6월 7일 23:30
- 감지된 SKILL.md 언어
- 판별 불가
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill dockerfile명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | dockerfile |
| description | Dockerfile 编写最佳实践 Use when this capability is needed. |
| metadata | {"author":"chaterm"} |
Dockerfile 最佳实践、安全扫描等技能。
# 基础镜像
FROM ubuntu:22.04
FROM node:18-alpine
FROM python:3.11-slim
# 多阶段构建
FROM node:18 AS builder
FROM nginx:alpine AS production
# 使用 ARG 动态指定
ARG BASE_IMAGE=node:18-alpine
FROM ${BASE_IMAGE}
# 设置工作目录(推荐使用绝对路径)
WORKDIR /app
WORKDIR /home/node/app
# 多次使用会切换目录
WORKDIR /app
WORKDIR src
# 当前目录: /app/src
# COPY(推荐)
COPY package.json ./
COPY src/ ./src/
COPY --chown=node:node . .
# 多文件复制
COPY package.json package-lock.json ./
# ADD(支持 URL 和解压)
ADD https://example.com/file.tar.gz /app/
ADD archive.tar.gz /app/ # 自动解压
# 推荐:优先使用 COPY,除非需要 ADD 的特殊功能
# Shell 形式
RUN apt-get update && apt-get install -y curl
# Exec 形式
RUN ["apt-get", "update"]
# 最佳实践:合并命令减少层数
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
wget \
git && \
rm -rf /var/lib/apt/lists/*
# CMD - 默认命令(可被覆盖)
CMD ["node", "app.js"]
CMD ["npm", "start"]
# ENTRYPOINT - 入口点(不易被覆盖)
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["postgres"]
# 组合使用
ENTRYPOINT ["python"]
CMD ["app.py"]
# 运行: python app.py
# docker run myimage other.py -> python other.py
# ENV - 运行时环境变量
ENV NODE_ENV=production
ENV PORT=3000 HOST=0.0.0.0
# ARG - 构建时参数
ARG VERSION=1.0
ARG BUILD_DATE
# ARG 转 ENV
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION}
# 使用构建参数
# docker build --build-arg VERSION=2.0 .
# 声明端口(文档作用)
EXPOSE 80
EXPOSE 443
EXPOSE 3000/tcp
EXPOSE 5000/udp
# 声明挂载点
VOLUME /data
VOLUME ["/data", "/logs"]
# 切换用户
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
# 或使用 UID
USER 1000:1000
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost/ || exit 1
# 禁用健康检查
HEALTHCHECK NONE
FROM node:18-alpine
# 创建非 root 用户
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
WORKDIR /app
# 先复制依赖文件
COPY package*.json ./
# 安装依赖
RUN npm ci --only=production && npm cache clean --force
# 复制源代码
COPY --chown=appuser:appgroup . .
# 切换用户
USER appuser
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s \
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
CMD ["node", "app.js"]
FROM python:3.11-slim
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /app
# 安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 创建非 root 用户
RUN useradd -m -r appuser && chown appuser:appuser /app
USER appuser
COPY --chown=appuser:appuser . .
EXPOSE 8000
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]
# 构建阶段
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o main .
# 生产阶段
FROM scratch
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder /app/main /main
EXPOSE 8080
ENTRYPOINT ["/main"]
# 构建阶段
FROM maven:3.9-eclipse-temurin-17 AS builder
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -DskipTests
# 生产阶段
FROM eclipse-temurin:17-jre-alpine
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
# Git
.git
.gitignore
# Node
node_modules
npm-debug.log
# Python
__pycache__
*.pyc
.venv
venv
# IDE
.idea
.vscode
*.swp
# Docker
Dockerfile*
docker-compose*
.dockerignore
# 文档
*.md
LICENSE
# 测试
test
tests
coverage
# 其他
.env
.env.*
*.log
tmp
# Docker Scout
docker scout cves myimage:tag
docker scout recommendations myimage:tag
# Trivy
trivy image myimage:tag
# Snyk
snyk container test myimage:tag
# Hadolint
docker run --rm -i hadolint/hadolint < Dockerfile
# Dockle
dockle myimage:tag
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["app"]
#!/bin/bash
set -e
# 初始化逻辑
if [ "$1" = 'app' ]; then
# 等待依赖服务
until nc -z db 5432; do
echo "Waiting for database..."
sleep 1
done
fi
exec "$@"
# 创建 builder
docker buildx create --name mybuilder --use
# 多架构构建并推送
docker buildx build --platform linux/amd64,linux/arm64 \
-t myrepo/myimage:tag --push .
# 使用 BuildKit 缓存
docker build --build-arg BUILDKIT_INLINE_CACHE=1 -t myimage:tag .
# 使用缓存
docker build --cache-from myimage:tag -t myimage:new .
| 问题 | 排查方法 |
|---|---|
| 构建慢 | 优化 COPY 顺序、使用缓存 |
| 镜像大 | 多阶段构建、精简基础镜像 |
| 权限问题 | 检查 USER、文件权限 |
| 依赖问题 | 检查网络、使用国内镜像源 |
Source: chaterm/terminal-skills — distributed by TomeVault.