Docker Composeで開発環境構築|PostgreSQL・MySQL・Redis・メール対応
開発中「PostgreSQLの接続設定どう書くんだっけ?」「Redisのコマンド何だっけ?」と毎回調べていませんか?Docker Composeの設定は覚えきれないものです。
本記事は開発時にコピペして即座に使えるDocker Compose設定集です。データベース、キャッシュ、メールサーバーなど、開発でよく使うサービスを管理画面付きですぐ起動できる設定をまとめました。
ブックマークしておけば、必要な時にコピペするだけ。もう設定方法を調べる必要はありません。
動作確認環境:
- Docker version 28.0.4, build b8034c0
- Docker Compose version v2.34.0-desktop.1
Dockerコマンドのみで単体サービスを起動したい場合は、Dockerコマンド集の記事をご参照ください。
データベース系サービス
▶PostgreSQL
最も使用頻度が高いリレーショナルデータベースの一つです。僕も日々の開発で一番使っています。
"Docker Hub:
- https://hub.docker.com/_/postgres (2025年9月21日時点: 17.6, 16.10, 15.14)
- https://hub.docker.com/r/dpage/pgadmin4 (2025年9月21日時点: 9.8.0, 8.14.0, 7.8)
services:
postgres:
image: postgres
container_name: postgres-dev
environment:
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
ports:
- "5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin-dev
environment:
PGADMIN_DEFAULT_EMAIL: user@domain.com
PGADMIN_DEFAULT_PASSWORD: SuperSecret
ports:
- "8080:80"
depends_on:
- postgres
volumes:
postgres-data:
接続情報:
- PostgreSQL:
localhost:5432
- ユーザー:
postgres
- パスワード:
password
- データベース:
mydb
- pgAdmin:
http://localhost:8080
- メール:
user@domain.com
- パスワード:
SuperSecret
- メール:
pgAdminで接続する際は、ホスト名にpostgres
(サービス名)を使用してください。
▶MySQL
もう一つの主要なリレーショナルデータベースです。
"Docker Hub
- https://hub.docker.com/_/mysql (2025年9月21日時点: 9.4.0, 8.4.6, 5.7.44)
- https://hub.docker.com/_/adminer/ (2025年9月21日時点: 5.4.0, 4.17.1)
services:
mysql:
image: mysql
container_name: mysql-dev
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
adminer:
image: adminer
container_name: adminer-dev
ports:
- "8080:8080"
depends_on:
- mysql
volumes:
mysql-data:
接続情報:
- MySQL:
localhost:3306
- ユーザー:
root
- パスワード:
password
- データベース:
mydb
- Adminer:
http://localhost:8080
Adminerで接続する際は、サーバー名にmysql
(サービス名)を使用してください。
▶MongoDB
NoSQLデータベースの代表格です。
"Docker Hub:
- https://hub.docker.com/_/mongo (2025年9月21日時点: 8.0.13, 7.0.24, 6.0.26)
- https://hub.docker.com/_/mongo-express (2025年9月21日時点: 1.0.2, 0.54.0)
services:
mongo:
image: mongo
container_name: mongo-dev
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
mongo-express:
image: mongo-express
container_name: mongo-express-dev
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: password
ME_CONFIG_MONGODB_URL: mongodb://admin:password@mongo:27017/
ME_CONFIG_BASICAUTH: false
ports:
- "8081:8081"
depends_on:
- mongo
volumes:
mongo-data:
接続情報:
- MongoDB:
localhost:27017
- 接続URL:
mongodb://admin:password@localhost:27017/
- 管理画面:
http://localhost:8081
キャッシュ・セッションストレージ
▶Redis
高速なインメモリデータストアです。パフォーマンスが命のアプリケーションでは必須です。
"Docker Hub:
- https://hub.docker.com/_/redis (2025年9月21日時点: 8.2.1, 7.4.5, 6.2.19)
- https://hub.docker.com/r/rediscommander/redis-commander (2025年9月21日時点: snyk-fix-08c85f17c94a7f00df6fb21e8ea1d10d)
services:
redis:
image: redis
container_name: redis-dev
command: redis-server --save 60 1 --loglevel warning
ports:
- "6379:6379"
volumes:
- redis-data:/data
redis-commander:
image: rediscommander/redis-commander
container_name: redis-commander-dev
environment:
REDIS_HOSTS: local:redis:6379
ports:
- "8081:8081"
depends_on:
- redis
volumes:
redis-data:
接続情報:
- Redis:
localhost:6379
- 管理画面:
http://localhost:8081
▶Memcached
シンプルで高速なメモリキャッシュシステムです。Redisよりも軽量でシンプルな用途に最適です。
"Docker Hub: https://hub.docker.com/_/memcached (2025年9月21日時点: 1.6.39)
services:
memcached:
image: memcached
container_name: memcached-dev
command:
- --conn-limit=1024
- --memory-limit=64
- --threads=4
ports:
- "11211:11211"
接続情報:
- Memcached:
localhost:11211
メッセージキューシステム
▶RabbitMQ
信頼性の高いメッセージキューシステムです。
"Docker Hub: https://hub.docker.com/_/rabbitmq (2025年9月21日時点: 4.1.4, 3.13.7)
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq-dev
hostname: my-rabbit
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: password
ports:
- "5672:5672"
- "15672:15672"
volumes:
- rabbitmq-data:/var/lib/rabbitmq
volumes:
rabbitmq-data:
接続情報:
- AMQP接続:
localhost:5672
- 管理画面:
http://localhost:15672
- ユーザー:
admin
- パスワード:
password
管理画面がとても便利で、メッセージの流れを視覚的に確認できます。
開発ツール・ユーティリティ
▶MailHog
開発時のメール送信をテストできるSMTPサーバーです。
"Docker Hub: https://hub.docker.com/r/mailhog/mailhog (2025年9月15日時点: v1.0.1)
services:
mailhog:
image: mailhog/mailhog
container_name: mailhog-dev
ports:
- "1025:1025"
- "8025:8025"
接続情報:
- SMTP:
localhost:1025
- Web UI:
http://localhost:8025
▶MinIO
AWS S3互換のローカルオブジェクトストレージです。
"Docker Hub: https://hub.docker.com/r/minio/minio (2025年9月21日時点: RELEASE.2025-09-07T16-13-09Z-cpuv1)
services:
minio:
image: minio/minio
container_name: minio-dev
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: password
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio-data:/data
volumes:
minio-data:
接続情報:
- API:
http://localhost:9000
- 管理画面:
http://localhost:9001
- ユーザー:
admin
- パスワード:
password
- 環境変数未設定の場合のログイン情報
- ユーザー:
minioadmin
- パスワード:
minioadmin
- ユーザー:
サービスの管理
▶サービスの起動
# バックグラウンドで起動
docker compose up -d
# 特定のサービスのみ起動
docker compose up -d postgres pgadmin
▶サービスの停止・削除
# サービス停止(再起動可能)
docker compose stop
# 特定のサービスのみ停止
docker compose stop postgres
# サービス停止とコンテナ削除
docker compose down
# 完全削除(停止・コンテナ削除・ボリューム削除)
docker compose down -v
▶サービスの再起動
# すべてのサービスを再起動
docker compose restart
# 特定のサービスのみ再起動
docker compose restart postgres
▶サービスの状態確認
# 実行中のサービス確認
docker compose ps
# ログ確認
docker compose logs
# 特定サービスのログ
docker compose logs postgres
# リアルタイムログ監視
docker compose logs -f
まとめ
開発環境で頻繁に使用するデータベース、キャッシュ、メッセージキュー、開発ツールなどのDocker Compose設定をコピペで即座に利用できる形でまとめました。
各サービスには管理画面を組み合わせており、データの確認やデバッグが容易になっています。設定方法を調べる時間を削減し、本来の開発作業に集中できるよう、ぜひこの設定集をブックマークしてご活用ください。
必要な時にコピー、貼り付け、起動。これだけで開発環境が整います。
参考リンク:
- Docker Compose公式ドキュメント - 公式リファレンス
- Docker Hub - 各種Dockerイメージの検索と最新バージョン確認
- pgAdmin公式ドキュメント - pgAdmin環境変数定義一覧
この記事はいかがでしたか?
もしこの記事が参考になりましたら、
高評価をいただけると大変嬉しいです!
皆様からの応援が励みになります。ありがとうございます! ✨