デプロイと運用ガイド
Docker Infrastructureの成果物を実際のインターネット上(クラウド)に公開する方法と、運用フローについての解説です。
1. クラウドへのデプロイ (Cloud Deployment)
「Docker Infrastructureの構成を無料でクラウドにデプロイしたい」という要望に対するガイドです。
無料枠で使える主なサービス
Docker Infrastructure (Docker Compose + Persistent Volume) を動かすには、仮想マシン (VM) を提供するサービスが適しています。
- Google Cloud Platform (GCP) - Compute Engine
- 無料枠:
e2-microインスタンス(米国リージョン等条件あり)。 - 適性: Debian OS が標準で選べるため、開発環境とほぼ同じ手順で構築可能です。
- 無料枠:
- AWS - EC2
- 無料枠:
t2.micro/t3.micro(最初の12ヶ月のみ)。 - 適性: 世界標準のクラウド。ドキュメントが豊富。
- 無料枠:
- Oracle Cloud Infrastructure (OCI) (推奨)
- 無料枠:
VM.Standard.E2.1.Micro(AMD) またはVM.Standard.A1.Flex(ARM) が恒久的に無料。 - ガイド: 詳細な手順は OCIデプロイメントガイド を参照してください。
- 無料枠:
デプロイ手順の概要 (GCP/AWS共通)
- VM作成: 管理画面から「Debian」を選んでインスタンスを作成。
- Firewall: セキュリティグループ設定で、
TCP 80,TCP 443,TCP 22 (SSH)を許可します。
- Firewall: セキュリティグループ設定で、
- SSH接続: クラウドのコンソールやターミナルから接続。
- 環境構築:
docs/dev/environment_setup.mdの手順を実行(Docker, Make等のインストール)。 - コード配置: Git clone でリポジトリを持ってくる。
- 起動:
make all実行。
注意: ドメインとSSL
- クラウドのIPアドレスは数字(例:
34.12.34.56)です。 local.devは使えません(「人生、宇宙、すべての答えを探すコードの旅」の学校が所有するドメインのため)。- 本番運用するなら、お名前.comやGoogle Domainsで独自ドメイン(年間1000円〜)を取得し、DNS設定でそのIPに向ける必要があります。
- SSL証明書も、オレオレ証明書ではなく、Let's Encrypt で正式な証明書を発行する構成 (
Certbot) に書き換えるのが一般的です。
2. 実運用でのドメインとDNSの仕組み
Docker Infrastructureなどの開発環境では /etc/hosts を使って無理やり「自分のPC内」で解決させていましたが、インターネット公開時は世界中の誰からでもアクセスできるようにするために DNS (Domain Name System) を適切に構成する必要があります。
全体アーキテクチャ図
ステップ1: ドメインの取得 (Registrar)
まずは「名前」を買う必要があります。これができる業者を レジストラ (Registrar) と呼びます。
- 主な業者: お名前.com, Google Domains, Route53 (AWS), Cloudflare
- 費用:
.comで年間 1500円程度。 - 設定: ドメインを買うと、そのドメインの「ネームサーバー (NS)」を指定できるようになります。
ステップ2: DNSレコードの設定
「この名前 (kamitsui.com)」を「このIPアドレス (34.56.xxx.xxx)」に紐付ける設定を書きます。これを ゾーンファイル と呼びます。
| レコードタイプ | 設定例 | 意味 |
|---|---|---|
| A レコード | @ -> 34.56.78.90 | kamitsui.com をIPアドレス 34.56... に向ける (IPv4) |
| CNAME | www -> @ | www.kamitsui.com は kamitsui.com と同じ場所だよ(エイリアス) |
| MX | @ -> mail.google.com | メールはGoogle Workspaceで受けるよ |
ステップ3: 世界中への伝播 (Propagation)
設定を変更しても、世界中のDNSサーバーに行き渡るまで時間がかかります(数分〜最大72時間)。これが完了すると、/etc/hosts を書かなくても、世界中のブラウザからアクセスできるようになります。
まとめ: /etc/hosts との違い
- 開発 (
/etc/hosts): 自分のPCだけ に通用する「オレオレ住所録」。 - 本番 (DNS): 世界中のPC が参照する「公式電話帳」。
2. GitHubを利用したデプロイフロー (CI/CD入門)
「GitHubにあるコードを自動で本番環境に反映したい」場合の考え方です。
1. 手動デプロイ (Pull型) - 今回の推奨
サーバーに入って git pull する方法です。シンプルで確実です。
ssh user@server
cd inception
git pull origin main
make re2. GitHub Actions (Push型) - 発展形
GitHubにPushしたら、自動でサーバーにSSH接続して更新コマンドを叩かせる方法です。 .github/workflows/deploy.yml を作成して定義しますが、SSH鍵の管理などセキュリティ知識が必要です。
3. WordPressの記事管理とMarkdown
ユーザーからの質問「Markdownで記事を書きたい」への回答です。
投稿画面でMarkdownを使う
WordPressの標準エディタ (Gutenberg) はリッチテキストですが、以下の方法でMarkdown対応可能です。
- Jetpack プラグイン: 機能設定で「Markdown」をONにするだけで、投稿画面でMarkdown記法がそのまま変換されます(一番楽)。
- WP Githuber MD: エディタ自体をMarkdown専用の高機能なものに置き換えます。
Gitで記事管理 (Git it Write 等)
「ローカルで書いたMarkdownファイルをGitHubにPushしたら、WordPressの記事として公開される」というプラグインも存在します(例: Git it Write)。 これを使うと、「インフラもコンテンツも全てGitHubで管理する」 ことが可能になり、エンジニアライクなブログ運営ができます。