0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】MAMPからDockerへの移行ガイド

Posted at

【備忘録】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/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?