ホームページ > バックエンド開発 > Golang > GitHubアクションとコンテナレジストリを使用したDocker画像管理のマスター

GitHubアクションとコンテナレジストリを使用したDocker画像管理のマスター

Linda Hamilton
リリース: 2025-01-28 14:04:10
オリジナル
603 人が閲覧しました

githubアクションを使用したドッカーイメージ管理のマスター:包括的なガイド

友人や同僚はしばしば「展開をどのように効率的に管理するの?」と尋ねます。 私の秘密?繰り返しのタスクを自動化し、本当に重要なことに焦点を合わせます。この投稿では、シームレスなDocker画像管理にGitHubアクションとコンテナレジストリを使用する方法を詳しく説明します。これは簡単に複製できるプロセスです。

今日のソフトウェア開発の状況では、CI/CDは贅沢ではありません。それは必要です。コーヒーを楽しんでいる間、コードを楽に展開することを想像してください。これは、GithubアクションとDocker Image Managementのコンテナレジストリを組み合わせる力です。

なぜgithubアクションとコンテナレジストリが重要であるのか

Mastering Docker Image Management with GitHub Actions and Container Registriesgithubアクション:CI/CDパートナー

Githubアクションは、単なる自動化ツール以上のものです。統合されたCI/CDソリューションであり、コードプッシュ、プルリクエスト、またはスケジュールされたイベントに応答します。 シームレスなGitHub統合により、プラットフォームを既に使用しているチームに最適です。

コンテナレジストリ:画像リポジトリ

Docker HubやGithub Container Registry(GHCR)などのコンテナレジストリをDocker画像の安全なリポジトリと考えてください。開発から生産まで、すべての環境にわたってバージョン制御と一貫した展開を提供します。

一般的なDockerイメージ管理の課題

Mastering Docker Image Management with GitHub Actions and Container Registries手動プロセス:

繰り返し手動タスクを楽しんでいる人はいません。
  • 複雑なタグ付け:画像タグの管理は圧倒される可能性があります。
  • セキュリティ上の懸念:レジストリを確保するには、慎重な計画が必要です
  • ビルド時間の遅い時間:画像ビルドを待つことで生産性に大きな影響を与える可能性があります。 ワークフローの合理化:ステップバイステップガイド
  • ステップ1:githubアクションワークフローの構成

リポジトリに

ディレクトリを作成し、YAMLワークフローファイルを定義します。 この例では、Docker画像を構築、タグ付け、およびプッシュします:

ステップ2:秘密を安全に管理するMastering Docker Image Management with GitHub Actions and Container Registries

機密情報(レジストリの資格情報)をGitHubの秘密に安全に保存します。 リポジトリの

設定>に移動します。秘密と変数>アクション.github/workflowsおよび次のような秘密を追加します

  • DOCKER_USERNAME
  • DOCKER_PASSWORD
ステップ3:堅牢なタグ付け戦略の実装GITHUB_TOKEN 効果的なバージョンの場合は、や

などのgithub環境変数を使用してください:

GITHUB_SHAステップ4:キャッシングでビルド速度を最適化GITHUB_REF

冗長な作業を避けるために、Dockerのビルドキャッシュを活用してください:
<code class="language-yaml">name: Build and Push Docker Image
on:
  push:
    branches:
      - main
jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v4
    - name: Log in to GitHub Container Registry
      # Securely authenticate with GHCR
      run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
    - name: Build Docker Image
      # Build with 'latest' tag
      run: docker build -t ghcr.io/${{ github.repository }}/app:latest .
    - name: Push Docker Image to GHCR
      run: docker push ghcr.io/${{ github.repository }}/app:latest</code>
ログイン後にコピー

一般的な課題への対処

<code class="language-yaml">- name: Build Docker Image with Tags
  # Tag with 'latest' and unique commit SHA
  run: |
    IMAGE_NAME=ghcr.io/${{ github.repository }}/app
    docker build -t $IMAGE_NAME:latest -t $IMAGE_NAME:${{ github.sha }} .

- name: Push Docker Images with Tags
  run: |
    docker push ghcr.io/${{ github.repository }}/app:latest
    docker push ghcr.io/${{ github.repository }}/app:${{ github.sha }}</code>
ログイン後にコピー

Mastering Docker Image Management with GitHub Actions and Container Registries認証の問題:

秘密とスコープを確認します。 GHCRの場合、に正しい権限があることを確認してください。
  • レート制限:より高い制限または組織全体のDocker Hubアカウントを持つ個人アクセストークン(PAT)を使用します。 GITHUB_TOKEN
  • 大規模な画像サイズ:
  • マルチステージビルド、最小限のベース画像(アルパインなど)、不必要な依存関係を削除してDockerFilesを最適化します。 デバッグ:
  • set
  • setin repository Secrets for forted logging。
  • 将来の傾向を探る ACTIONS_STEP_DEBUG=true
  • ソフトウェア材料請求書(SBOM):SyftやTrivyのようなツールはSBOMを生成し、サプライチェーンのセキュリティを強化します。

ociコンプライアンス:

さまざまなプラットフォームでのコンテナイメージの互換性を確保します。
  • 不変のインフラストラクチャ:ドリフトと一貫性を低下させるためのコンテナ化された展開。
  • 現実世界のアプリケーション GitHubアクションを使用して、プロジェクトのTravast(Goで構築されたジョブポータル)のGHCRおよびDocker HubにDocker画像を展開します。この自動化により、チームの効率が大幅に向上しました
  • これらの手順に従うことにより、Docker画像管理を自動化できます。 今日から始めて、展開を合理化し、生産性を高めます。 これが役立つとわかった場合は、KO-Fiでの私の仕事をサポートすることを検討してください。
  • さらに読み取り
  • githubアクションドキュメント

dockerハブレジストリ

github container registry

syft -sbom生成

trivy-セキュリティスキャン

    以上がGitHubアクションとコンテナレジストリを使用したDocker画像管理のマスターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート