GitHubActions

GitHub ActionsとDockerで自動デプロイする手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

GitHub ActionsによるDockerコンテナ自動デプロイの実務ガイド

Webアプリケーション開発者が悩む「本番環境への手動デプロイ」は、バグのリスクやリリース遅延を引き起こします。本記事ではGitHub ActionsDockerを組み合わせた自動デプロイワークフローをステップバイステップで解説し、実務で即活用できる知識をお伝えします。キーワード「GitHub Actions 自動デプロイ Docker コンテナ 手順」に沿った具体的な導入方法と注意点を網羅しています。


GitHub Actionsによる自動デプロイの概要

DockerとGitHub Actionsを組み合わせることで、開発環境から本番環境までの一貫性が確保できます。Dockerはコンテナ化によって依存関係を管理し、GitHub ActionsはCI/CDパイプラインを自動化するため、両者の連携は現代のDevOpsにおいて不可欠です。

なぜDockerとGitHub Actionsを組み合わせるのか?

  • 一貫性の確保: ローカル環境と本番環境で動作が異なるという問題を解消できます。
  • 再現性の向上: Dockerイメージは任意のサーバーで同じように実行可能です。
  • 自動化による効率化: GitHub Actionsにより、コードプッシュ時に自動的にビルド・デプロイが行われます。
利点 説明
開発環境と本番環境の統一 Dockerはコンテナイメージを固定できるため、不一致リスクが減少します。
リリース頻度の向上 GitHub Actionsにより、手動操作を排除して高速なCI/CDが実現できます。
チーム間での協業支援 すべての環境で同じDockerイメージを使うことで、開発者同士の誤差を防ぎます。

ワークフロー構成ファイル(workflow.yml)の基本

GitHub Actionsでは.github/workflows/ディレクトリに配置するworkflow.ymlというYAMLファイルでワークフローを定義します。このファイルはイベントトリガーとジョブの実行手順を記述します。

イベントトリガーの設定方法

ワークフローを実行させるトリガーイベントを指定します。主なイベントには以下があります:

  • push: リポジトリにプッシュされたとき
  • pull_request: プルリクエストが作成されたとき
  • schedule: 指定時間に定期的に実行

ワークフローの基本構文は以下の通りです。

ジョブとステップの定義

ジョブは1つ以上のステップで構成され、各ステップで特定のアクション(例:Dockerイメージのビルド)が実行されます。以下に基本的な構文を示します。


Dockerイメージのビルドとプッシュ手順

Dockerはアプリケーションをコンテナ化し、GitHub Actionsで自動的にビルド・プッシュできます。ただしローカル環境との違いに注意が必要です。

Dockerfileの基本構成

Dockerfileは以下のようにシンプルな構造を持ちます。FROM, RUN, EXPOSE, CMDなどのコマンドが使われます。

GitHub Actionsでのビルドプロセス

GitHub Actionsでは以下の手順でDockerイメージをビルド・プッシュします。

  1. Dockerイメージの作成: docker build -t my-app . でローカル環境にイメージを作成。
  2. レジストリへのログインとプッシュ:
    bash
    docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PASSWORD
    docker push my-app

    ⚠️ 注意: GitHub ActionsのCI環境ではローカルと同様にDockerが動くが、ネットワーク制限により外部レジストリへのアクセスが必要な場合があります。


デプロイ先サーバーの準備と要件

GitHub Actionsからデプロイするには、デプロイ先サーバー(例: EC2やVPS)に適切な環境が整っている必要があります。特にSSHアクセスとコンテナ実行環境を確認しましょう。

SSHアクセス設定

サーバーへのSSH接続は以下の手順で確立します。

  1. SSH鍵の生成:
    bash
    ssh-keygen -t ed25519 -C "[メールアドレス]"

    ⚠️ 以前のrsa指定と矛盾するため、最新かつセキュリティに優れたed25519を推奨します。

  2. 公開鍵をサーバーに登録: ~/.ssh/id_ed25519.pub の内容をサーバーの~/.ssh/authorized_keysファイルに追記。

  3. GitHub ActionsへのSecrets登録:
  4. GitHubリポジトリの「Settings」→「Secrets and variables」→「Actions」にSSH秘密鍵を設定。

コンテナ実行環境の確認

Dockerコンテナが動作するには、以下の前提条件が必要です。用途に応じてポート番号や環境変数を柔軟に指定してください。

  • Dockerエンジンがインストール済み
  • 必要なポート(例: 80, 443)が開いている(変更可能な環境変数で管理可)
  • ユーザー権限設定(sudoなど)
検証項目 必要性 対応方法
Docker実行可能 ✅必須 docker --version を実行
ポートの開閉状態 ✅必須 ufw status で確認
SSH接続可否 ✅必須 ssh user@server_ip でテスト

セキュリティ設定とSecrets管理

GitHub Actionsで資格情報を安全に管理するには、Environment SecretsやSSH鍵の適切な運用が不可欠です。

SSH鍵の生成とGitHubへの登録

SSH鍵は以下の手順で作成し、GitHub Actionsに登録します。

  1. ローカルでのSSH鍵生成:
    bash
    ssh-keygen -t ed25519 -C "[メールアドレス]"

  2. 公開鍵をサーバーに追加: 公開鍵(id_ed25519.pub)を~/.ssh/authorized_keysにコピー。

  3. GitHub ActionsへのSecrets登録:
  4. GitHubリポジトリの「Settings」→「Secrets and variables」→「Actions」で、環境変数SSH_PRIVATE_KEYなどを設定。

Environment Secretsの活用

GitHub Actionsではセキュリティを強化するために、環境ごとにSecretsを管理できます。以下に典型的なSecretsの例を示します。

⚠️ ベストプラクティス: GitHub Actionsで使われるSecretsは、定期的に変更し、権限を最小限に抑えるようにしましょう。


エラーハンディリングとモニタリング

自動デプロイでは失敗時の対応とログ監視が重要です。GitHub Actionsにはエラーコードの検出や通知機能があります。

失敗時の通知設定

ワークフローで失敗した場合に通知を受け取るには、以下のようにon_failureを定義します。

ログの可視化方法

GitHub Actionsで実行されたワークフローのログは、リポジトリの「Actions」タブから閲覧可能です。また、監視ツールと連携することでより詳細な監視ができます。

  • 監視ツールの利用: PrometheusやGrafana、Datadogなどに統合してリアルタイムでモニタリング。
  • ログ出力設定:
    yaml
  • name: ログ出力確認
    run: |
    docker logs my-app-container > /tmp/app.log
    curl --data-binary @/tmp/app.log https://your-log-server.com/api/logs

まとめ

本記事では、GitHub ActionsとDockerを活用した自動デプロイの手順について、以下のような要点をお伝えしました。

  • ワークフローの作成方法: workflow.ymlでイベントトリガーとジョブを定義。
  • Dockerイメージのビルド・プッシュ: Dockerfileの構築とGitHub Actionsでの実行手順。
  • デプロイ先サーバーの準備: SSH接続とコンテナ環境の確認が必須。
  • セキュリティ管理: SSH鍵とSecretsで資格情報を安全に管理。
  • エラーハンディリング: 失敗時の通知とログの可視化を実装。

これらを踏まえることで、開発者の負担軽減とデプロイ品質の向上が期待できます。記事に記載したワークフロー構成ファイルをGitHubリポジトリに適用し、自動デプロイ環境構築を試してみましょう。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-GitHubActions