マイクロサービス開発では、複数のサービスをコンテナで管理することが一般的です。しかし、環境構築を毎回手作業で行うと、時間がかかり設定ミスのリスクも高まります。そこで本記事では Ansible と Docker Compose を組み合わせて、マイクロサービス開発環境を自動構築する方法を解説します。
1. なぜAnsibleとDocker Composeを組み合わせるのか?
マイクロサービス環境では、複数のアプリケーション(APIサーバー、DB、キャッシュサーバーなど)を一括で立ち上げたい場面が多くあります。
- Docker Compose
複数のコンテナを定義・起動できる便利なツール。ただし、事前にDockerや設定ファイルを配置しておく必要があります。 - Ansible
インフラをコードで管理し、自動で環境を構築できるツール。複数サーバーに対して一括で操作が可能です。
この2つを組み合わせることで、以下が実現できます。
- 開発環境をワンコマンドで再現可能
- チーム全体で統一された環境を利用できる
- 本番環境へのデプロイ準備が容易になる
2. 前提条件
- Ansible がインストール済みの管理用マシン
- Docker / Docker Compose をインストールしたい対象サーバー(例:Linuxサーバー)
- SSH接続が可能な状態
3. ディレクトリ構成例
以下のような構成でプロジェクトを準備します。
project/
├── ansible/
│ ├── hosts
│ ├── site.yml
│ └── roles/
│ └── docker/
│ ├── tasks/main.yml
│ └── templates/docker-compose.yml.j2
4. Ansibleのインベントリ設定(hosts)
ansible/hosts
[web]
192.168.56.10 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
※対象サーバーのIPアドレスやユーザーを環境に合わせて修正してください。
5. Playbookの作成(site.yml)
ansible/site.yml
- hosts: web
become: true
roles:
- docker
6. Dockerのインストールタスク
ansible/roles/docker/tasks/main.yml
- name: Install required packages
apt:
name: "{{ item }}"
state: present
update_cache: yes
loop:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- name: Add Docker GPG key
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present
- name: Add Docker repository
apt_repository:
repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
state: present
- name: Install Docker
apt:
name: docker-ce
state: present
update_cache: yes
- name: Install Docker Compose
get_url:
url: https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m`
dest: /usr/local/bin/docker-compose
mode: '0755'
- name: Create project directory
file:
path: /opt/microservices
state: directory
- name: Deploy docker-compose.yml
template:
src: docker-compose.yml.j2
dest: /opt/microservices/docker-compose.yml
- name: Start services with Docker Compose
command: docker-compose -f /opt/microservices/docker-compose.yml up -d
args:
chdir: /opt/microservices
7. Docker Composeテンプレート
ansible/roles/docker/templates/docker-compose.yml.j2
version: '3'
services:
app:
image: python:3.9
volumes:
- ./app:/usr/src/app
working_dir: /usr/src/app
command: python app.py
ports:
- "8000:8000"
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
ports:
- "5432:5432"
8. 実行方法
管理用マシンで以下のコマンドを実行します。
cd ansible
ansible-playbook -i hosts site.yml
これで、対象サーバーにDocker・Docker Composeがインストールされ、マイクロサービス環境が自動的に立ち上がります。
9. まとめ
AnsibleとDocker Composeを組み合わせることで、マイクロサービス開発環境をワンコマンドで再現できるようになります。
- Ansible で環境の自動構築
- Docker Compose でサービス群の起動・停止を管理
- チーム開発やCI/CDにも応用可能
効率的な開発環境を整えたい方は、ぜひ試してみてください。
👉 次回は、この仕組みを拡張して Ansibleで複数サーバーにマイクロサービスをデプロイする方法 も解説予定です。