devops について
CI/CD、コンテナ化、デプロイ設定、インフラ自動化を扱う DevOps スキルです。Docker、GitHub Actions、Kubernetes の例とガイダンスを含みます。
主な機能
- 01CI/CDパイプラインの設定
- 02DockerfileとComposeのガイダンス
- 03GitHub Actionsワークフロー
- 04Kubernetesデプロイの基礎
- 05ビルドのトラブルシューティング
- 06インフラ自動化
活用シーン
- 01テストとデプロイ手順を含むCI/CDワークフローの作成
- 02ローカル開発向けアプリのコンテナ化
- 03Kubernetesデプロイの設定
- 04ビルド失敗の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ htlin222/ dotfiles --skill devopsインストール後、Claude Code で/devopsを入力して読み込まれたか確認します。
詳細
DevOps
CI/CD パイプライン、コンテナ化、デプロイの自動化。
使用する場面
- CI/CD パイプラインを設定する
- Dockerfile を作成する
- デプロイを設定する
- ビルドのトラブルシューティングを行う
- インフラストラクチャを自動化する
Docker
Dockerfile のベストプラクティス
# Multi-stage build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER node
EXPOSE 3000
CMD ["node", "dist/index.js"]
Docker Compose
version: "3.8"
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://db:5432/app
depends_on:
- db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
db:
image: postgres:15-alpine
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=app
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
secrets:
- db_password
volumes:
postgres_data:
secrets:
db_password:
file: ./secrets/db_password.txt
GitHub Actions
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- run: npm ci
- run: npm test
- run: npm run lint
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy
run: |
echo "Deploying to production"
Kubernetes の基本
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: app
image: myapp:latest
ports:
- containerPort: 3000
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "200m"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 10
periodSeconds: 30
例
入力:「このプロジェクトの CI/CD を設定して」 **アクション:**フレームワークを検出し、GitHub Actions ワークフローを作成して、テストとデプロイの手順を追加します
入力:「このアプリを Docker 化して」 **アクション:**最適化された Dockerfile とローカル開発用の docker-compose を作成し、使用方法を記載します
コメント
Markdown 対応