Vagrantを使用してUbuntu 24.04上にDocker環境を自動構築するプロジェクトです。 Ansibleを使用して必要なソフトウェアのインストールと設定を行い、Node.js アプリケーションを実行するための環境を構築します。
サンプルとして、シンプルな Express アプリケーション(playbooks/app)が含まれています。
- OS: Ubuntu 24.04 (bento/ubuntu-24.04)
- Docker: geerlingguy.docker ロールによるインストール
- タイムゾーン: Asia/Tokyo
- SSL/TLS: 自己署名証明書によるHTTPS接続
| コンテナ | 説明 |
|---|---|
| Node.js | Node.js v24 アプリケーションサーバー |
| Nginx | リバースプロキシ/Webサーバー(HTTPS対応) |
| MariaDB | データベースサーバー |
| Redis | キャッシュサーバー |
- VirtualBox がインストールされていること
- Vagrant がインストールされていること
- 十分なメモリ(最低2GB)と空きディスク容量があること
.
├── README.md # このファイル
├── Vagrantfile # Vagrant設定ファイル
└── playbooks/ # Ansibleプレイブック
├── main.yml # メインプレイブック
├── requirements.yml # 必要なロールの定義
├── app/ # Node.jsアプリケーション(Express サンプル)
│ ├── package.json # 依存関係定義
│ ├── README.md # アプリケーション説明
│ └── src/
│ └── index.js # メインアプリケーション
├── vars/ # 変数定義
│ └── main.yml # メイン変数ファイル
├── tasks/ # タスク定義
│ ├── japanese.yml # 日本語環境設定
│ ├── redis.yml # Redisコンテナ構築
│ ├── mariadb.yml # MariaDBコンテナ構築
│ ├── nginx.yml # Nginxコンテナ構築
│ ├── nodejs.yml # Node.jsコンテナ構築
│ └── app.yml # アプリケーションデプロイ
└── containers/ # コンテナ設定
├── mariadb/ # MariaDB用Dockerfile等
├── nginx/ # Nginx用設定ファイル等
├── nodejs/ # Node.js用Dockerfile等
└── redis/ # Redis用Dockerfile等
仮想マシンには固定IPアドレス 192.168.33.10 が設定されます。
必要に応じて Vagrantfile の config.vm.network の設定を変更してください。
- リポジトリをクローンする
- 以下のコマンドを実行してVirtualBox上に環境を構築
vagrant up環境構築後、以下のいずれかの方法で仮想マシンに接続できます。
- Vagrantから接続:
vagrant ssh- SSHで直接接続:
ssh vagrant@192.168.33.10※デフォルトパスワード: vagrant
接続後、以下のコマンドでrootユーザーに切り替えることができます。
sudo su -環境構築後、仮想マシン内で以下のコマンドでコンテナの状態を確認できます。
docker ps # 実行中のコンテナ一覧
docker logs nodejs # Node.jsコンテナのログ
docker logs nginx # Nginxコンテナのログ
docker logs mariadb # MariaDBコンテナのログ
docker logs redis # RedisコンテナのログMariaDBの初期設定は以下の通りです(playbooks/vars/main.yml で変更可能):
| 項目 | 値 |
|---|---|
| rootパスワード | root_password |
| データベース名 | sample-db |
| ユーザー名 | sample_user |
| パスワード | sample_password |
playbooks/vars/main.ymlを編集することで、コンテナ名やDB設定を変更できますplaybooks/main.ymlを編集することで、追加のパッケージやタスクを追加できますVagrantfileのvb.memoryを編集して、仮想マシンのメモリ割り当てを変更できます
この環境では、NginxがHTTPS(ポート443)でリッスンし、自己署名SSL証明書を使用してセキュアな接続を提供します。
HTTPポート(80)へのアクセスは自動的にHTTPS(443)にリダイレクトされます。
自己署名証明書を使用しているため、ブラウザで初回アクセス時に「安全ではありません」という警告が表示されます。 これは開発環境では正常な動作です。以下の手順で続行できます:
- ブラウザで
https://192.168.33.10にアクセス - 「詳細設定」または「Advanced」をクリック
- 「安全ではないページに移動」または「Proceed to 192.168.33.10 (unsafe)」をクリック
playbooks/app ディレクトリに Express を使用したシンプルなサンプルアプリケーションが含まれています。
GET /- アプリケーション情報GET /health- ヘルスチェックGET /hello/:name- 挨拶メッセージPOST /echo- JSONエコーバック
playbooks/app ディレクトリの内容を置き換えるか、以下の要件を満たすアプリケーションを配置してください:
package.jsonにstartスクリプトが定義されていること- ポート 3000 でリッスンすること
- pnpm を使用すること
ネットワーク設定に問題が発生した場合は、Vagrantfile の IPアドレスを
使用環境に合わせて変更してください。
VirtualBoxの設定や競合を確認し、必要に応じてVirtualBoxを再起動してください。
vagrant provision