首页/DevOps/docker-deployment
D

docker-deployment

by @pluginagentmarketplacev1.0.0
0.0(0)

精通使用Docker技术,将Node.js应用程序容器化,并进行高效、可靠的部署与管理,实现跨环境的一致性运行。

DockerContainerizationDevOpsCI/CDDeployment AutomationGitHub
安装方式
npx skills add pluginagentmarketplace/custom-plugin-nodejs --skill docker-deployment
compare_arrows

Before / After 效果对比

1
使用前

传统部署Node.js应用时,环境配置复杂,依赖冲突频发,导致部署过程漫长且问题不断。

使用后

利用Docker部署技能,能迅速将Node.js应用容器化,确保环境一致性,大幅简化部署流程,提高效率。

description SKILL.md

docker-deployment

Docker Deployment Skill Master containerizing and deploying Node.js applications with Docker for consistent, portable deployments. Quick Start Dockerize Node.js app in 3 steps: Create Dockerfile - Define container image Build Image - docker build -t myapp . Run Container - docker run -p 3000:3000 myapp Core Concepts Basic Dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 CMD ["node", "src/index.js"] Multi-Stage Build (Optimized) # Build stage FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . # Production stage FROM node:18-alpine WORKDIR /app # Copy from builder COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app . # Create non-root user RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 USER nodejs EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=3s \ CMD node healthcheck.js || exit 1 CMD ["node", "src/index.js"] Learning Path Beginner (1-2 weeks) ✅ Understand Docker basics ✅ Create simple Dockerfile ✅ Build and run containers ✅ Manage volumes and networks Intermediate (3-4 weeks) ✅ Multi-stage builds ✅ Docker Compose ✅ Environment variables ✅ Health checks Advanced (5-6 weeks) ✅ Image optimization ✅ Production best practices ✅ Container orchestration ✅ CI/CD integration Docker Compose # docker-compose.yml version: '3.8' services: app: build: . ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=postgresql://db:5432/myapp - REDIS_URL=redis://redis:6379 depends_on: - db - redis restart: unless-stopped db: image: postgres:15-alpine environment: - POSTGRES_USER=myapp - POSTGRES_PASSWORD=secret - POSTGRES_DB=myapp volumes: - postgres-data:/var/lib/postgresql/data redis: image: redis:7-alpine volumes: - redis-data:/data nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - app volumes: postgres-data: redis-data: Docker Compose Commands # Start services docker-compose up -d # View logs docker-compose logs -f app # Stop services docker-compose down # Rebuild images docker-compose up -d --build # Scale services docker-compose up -d --scale app=3 .dockerignore node_modules npm-debug.log .git .gitignore .env .env.local .vscode .md tests coverage .github Dockerfile docker-compose.yml Docker Commands # Build image docker build -t myapp:latest . # Run container docker run -d -p 3000:3000 --name myapp myapp:latest # View logs docker logs -f myapp # Enter container docker exec -it myapp sh # Stop container docker stop myapp # Remove container docker rm myapp # List images docker images # Remove image docker rmi myapp:latest # Prune unused resources docker system prune -a Environment Variables # In Dockerfile ENV NODE_ENV=production ENV PORT=3000 # Or in docker-compose.yml environment: - NODE_ENV=production - PORT=3000 # Or from .env file env_file: - .env.production Volumes for Persistence services: app: volumes: - ./logs:/app/logs # Bind mount - node_modules:/app/node_modules # Named volume volumes: node_modules: Health Checks # In Dockerfile HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \ CMD node healthcheck.js || exit 1 // healthcheck.js const http = require('http'); const options = { host: 'localhost', port: 3000, path: '/health', timeout: 2000 }; const request = http.request(options, (res) => { console.log(STATUS: ${res.statusCode}); process.exit(res.statusCode === 200 ? 0 : 1); }); request.on('error', (err) => { console.log('ERROR:', err); process.exit(1); }); request.end(); Image Optimization # Use Alpine (smaller base image) FROM node:18-alpine # 180MB vs node:18 (1GB) # Multi-stage build (remove build dependencies) # Use .dockerignore (exclude unnecessary files) # npm ci instead of npm install (faster, deterministic) # Only production dependencies RUN npm ci --only=production # Combine RUN commands (fewer layers) RUN apk add --no-cache git && \ npm ci && \ apk del git Production Best Practices FROM node:18-alpine # Don't run as root RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 WORKDIR /app COPY --chown=nodejs:nodejs package.json ./ RUN npm ci --only=production COPY --chown=nodejs:nodejs . . USER nodejs # Health check HEALTHCHECK CMD node healthcheck.js || exit 1 # Use node instead of npm start (better signal handling) CMD ["node", "src/index.js"] Docker Hub Deployment # Login docker login # Tag image docker tag myapp:latest username/myapp:1.0.0 docker tag myapp:latest username/myapp:latest # Push to Docker Hub docker push username/myapp:1.0.0 docker push username/myapp:latest # Pull from Docker Hub docker pull username/myapp:latest CI/CD with GitHub Actions name: Docker Build & Deploy on: push: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: docker/setup-buildx-action@v2 - uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - uses: docker/build-push-action@v4 with: push: true tags: username/myapp:latest cache-from: type=gha cache-to: type=gha,mode=max Common Issues & Solutions Node modules caching # Cache node_modules layer COPY package*.json ./ RUN npm ci COPY . . # This doesn't rebuild node_modules Signal handling # Use node directly (not npm) CMD ["node", "src/index.js"] # In app: Handle SIGTERM process.on('SIGTERM', () => { server.close(() => process.exit(0)); }); When to Use Use Docker deployment when: Need consistent environments (dev, staging, prod) Deploying microservices Want easy scaling and orchestration Using cloud platforms (AWS, GCP, Azure) Implementing CI/CD pipelines Related Skills Express REST API (containerize APIs) Database Integration (multi-container setup) Testing & Debugging (test in containers) Performance Optimization (optimize images) Resources Docker Documentation Docker Compose Node.js Docker Best Practices Weekly Installs192Repositorypluginagentmark…n-nodejsGitHub Stars1First SeenJan 21, 2026Security AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled onopencode173gemini-cli166codex160cursor155github-copilot152claude-code138

forum用户评价 (0)

发表评价

效果
易用性
文档
兼容性

暂无评价,来写第一条吧

统计数据

安装量0
评分0.0 / 5.0
版本1.0.0
更新日期2026年3月18日
对比案例1 组

用户评分

0.0(0)
5
0%
4
0%
3
0%
2
0%
1
0%

为此 Skill 评分

0.0

兼容平台

🔧Claude Code

时间线

创建2026年3月18日
最后更新2026年3月18日