adding-docker
Dockerize an application with a production-ready Dockerfile, docker-compose setup, and .dockerignore.
Install
npx skills add https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/adding-docker
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install spencerpauly-awesome-cursor-skills@llmmart
git clone https://github.com/spencerpauly/awesome-cursor-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole spencerpauly/awesome-cursor-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Add Docker
Use this skill when the user asks to dockerize, containerize, or add Docker support to an application.
Steps
Detect the runtime — inspect
package.json,requirements.txt,go.mod,Cargo.toml, etc. to determine the language and runtime.Create a multi-stage
DockerfileFor Node.js (example):
FROM node:20-alpine AS base FROM base AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --omit=dev FROM base AS build WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY . . RUN npm run build FROM base AS runner WORKDIR /app ENV NODE_ENV=production COPY --from=deps /app/node_modules ./node_modules COPY --from=build /app/.next ./.next COPY --from=build /app/public ./public COPY --from=build /app/package.json ./ EXPOSE 3000 CMD ["npm", "start"]Adapt for the detected framework — adjust the build output directory, entry command, and base image.
Create
.dockerignorenode_modules .next .git .env* *.mdCreate
docker-compose.yml(if the app has dependencies like a database or Redis):services: app: build: . ports: - "3000:3000" env_file: .env depends_on: - db db: image: postgres:16-alpine environment: POSTGRES_DB: app POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata:Add npm scripts (optional)
{ "docker:build": "docker build -t myapp .", "docker:run": "docker compose up" }
Notes
- Use Alpine-based images to minimize image size.
- Never copy
.envfiles into the image — useenv_fileor runtime injection. - For monorepos, use a
.dockerignorethat excludes sibling packages not needed by the target app. - Add a
HEALTHCHECKinstruction for production deployments.
Files (awesome-cursor-skills)
-
SKILL.md 2.1 KB
--- name: adding-docker description: Dockerize an application with a production-ready Dockerfile, docker-compose setup, and .dockerignore. --- # Add Docker Use this skill when the user asks to dockerize, containerize, or add Docker support to an application. ## Steps 1. **Detect the runtime** — inspect `package.json`, `requirements.txt`, `go.mod`, `Cargo.toml`, etc. to determine the language and runtime. 2. **Create a multi-stage `Dockerfile`** For Node.js (example): ```dockerfile FROM node:20-alpine AS base FROM base AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --omit=dev FROM base AS build WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY . . RUN npm run build FROM base AS runner WORKDIR /app ENV NODE_ENV=production COPY --from=deps /app/node_modules ./node_modules COPY --from=build /app/.next ./.next COPY --from=build /app/public ./public COPY --from=build /app/package.json ./ EXPOSE 3000 CMD ["npm", "start"] ``` Adapt for the detected framework — adjust the build output directory, entry command, and base image. 3. **Create `.dockerignore`** ``` node_modules .next .git .env* *.md ``` 4. **Create `docker-compose.yml`** (if the app has dependencies like a database or Redis): ```yaml services: app: build: . ports: - "3000:3000" env_file: .env depends_on: - db db: image: postgres:16-alpine environment: POSTGRES_DB: app POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: ``` 5. **Add npm scripts** (optional) ```json { "docker:build": "docker build -t myapp .", "docker:run": "docker compose up" } ``` ## Notes - Use Alpine-based images to minimize image size. - Never copy `.env` files into the image — use `env_file` or runtime injection. - For monorepos, use a `.dockerignore` that excludes sibling packages not needed by the target app. - Add a `HEALTHCHECK` instruction for production deployments.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.