【備忘録】MAMPからDockerへの移行ガイド
はじめに
こんにちは!PHP開発をしているエンジニアです。今回は、MAMPからDockerへの開発環境移行について、実際の経験をもとに解説していきます。
移行を決意した理由
現状の課題
- 複数プロジェクトによるストレージ容量の圧迫
- プロジェクトごとの環境管理が面倒臭い
解決した点
- 開発環境の向上(体感です)
- プロジェクト単位での環境分離
事前準備
1. 既存環境の棚卸し
以下のコマンドで現在の開発環境のバージョンを確認します。
# PHPバージョンの確認
php -v
# MySQLバージョンの確認
mysql --version
# Apacheバージョンの確認
httpd -v
2. 必要なバックアップの取得
既存データをバックアップします。
# データベースのバックアップ
mysqldump -u root -p database_name > backup.sql
# プロジェクトファイルのバックアップ
cp -r /Applications/MAMP/htdocs/your_project ./backup/
Docker環境の構築
1. プロジェクト構成
プロジェクトのディレクトリ構造を以下のように構築します。
your_project/
├── docker-compose.yml
├── docker/
│ ├── php/
│ │ └── Dockerfile
│ ├── mysql/
│ │ └── my.cnf
│ └── nginx/
│ └── default.conf
├── src/
└── .env
2. docker-compose.ymlの設定
以下は docker-compose.yml
の基本的な設定例です。
version: '3.8'
services:
app:
build:
context: .
dockerfile: docker/php/Dockerfile
volumes:
- ./src:/var/www/html
depends_on:
- db
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./src:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
volumes:
- mysql-data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
mysql-data:
3. PHPのDockerfile
PHPのDockerfileで必要なパッケージをインストールします。
FROM php:8.1-fpm
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
移行手順
1. 環境構築
Dockerコンテナのビルドと起動を行います。
# Dockerコンテナのビルド
docker-compose build
# Dockerコンテナの起動
docker-compose up -d
# コンテナの状態確認
docker-compose ps
2. データの移行
バックアップしたデータを新しいDocker環境にインポートします。
# データベースのインポート
docker exec -i your_project_db_1 mysql -u root -p database_name < backup.sql
# プロジェクトファイルの配置
cp -r backup/* ./src/
つまづきポイントと解決策
1. パーミッション関連
storage
ディレクトリの権限を適切に設定します。
docker-compose exec app chmod -R 777 storage
docker-compose exec app chmod -R 777 bootstrap/cache
2. ネットワーク関連
ポートが重複している場合は、docker-compose.yml
内でポートを変更します。
ports:
- "8080:80" # 80番ポートが使用中の場合
3. 環境変数の設定
.env
ファイルに必要なデータベース設定を記述します。
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=root
DB_PASSWORD=your_password
移行後の運用とメリット
日常的なコマンド
以下はDocker環境での一般的な操作コマンドです。
# 開発環境の起動
docker-compose up -d
# コンテナのログ確認
docker-compose logs -f
# 開発環境の停止
docker-compose down
メリット
- プロジェクト単位での環境分離が可能
- バージョン管理が簡単
まとめ
MAMPからDockerへの移行は大変だろうなと思っていましたが1度やってみたらそんなにでもなかったかなと思います。もし移行を検討中の方は、ぜひこのガイドを参考にしてみてください。
参考資料
採用拡大中!
アシストエンジニアリングでは一緒に働くフロントエンド、バックエンドのエンジニア仲間を大募集しています!
少しでも興味ある方は、カジュアル面談からでもぜひお気軽にお話ししましょう!
お問い合わせはこちらから↓
https://official.assisteng.co.jp/contact/