目次
開発環境
- Visual Studio Code:version 1.73.0
- OS:Windows10
- Docker Engine:v23.0.5
DockerでLaravel+Nginx+MySQLの環境構築をする手順
DockerでLaravel+Nginx+MySQLの環境構築をする手順について解説していきます。
ディレクトリ構成
今回のディレクトリ構成は下記を目指していきます。
1 2 3 4 5 6 7 | project-root/ ├── docker/ │ ├── web/ # PHPコンテナ(Dockerfile) │ ├── database/ # MySQLコンテナ(Dockerfile) │ └── nginx/ # Nginxコンテナ(Dockerfile + 設定ファイル) ├── web/ # Laravelプロジェクトを配置するディレクトリ └── docker-compose.yml # Docker Composeファイル |
docker-compose.ymlを作成
まずはdocker-compose.ymlを作成していきます。
ルートディレクトリの直下にdocker-compose.ymlを作成し、以下のようにしてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | version: '3.8' services: web: build: context: . dockerfile: docker/web/Dockerfile container_name: laravel_web ports: - "9000:9000" volumes: - ./web:/var/www/html depends_on: - db db: build: context: . dockerfile: docker/database/Dockerfile container_name: laravel_db environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: laravel_db MYSQL_USER: laravel_user MYSQL_PASSWORD: laravel_password ports: - "3306:3306" volumes: - db_data:/var/lib/mysql nginx: build: context: . dockerfile: docker/nginx/Dockerfile container_name: laravel_nginx ports: - "8000:80" volumes: - ./web:/var/www/html - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - web volumes: db_data: |
PHPコンテナを作成
次にPHPコンテナを作成していきます。
docker/web/
ディレクトリの直下にDockerfileを作成し、以下のようにしてください。
1 2 3 4 5 6 7 8 9 10 | FROM php:8.2-fpm WORKDIR /var/www/html RUN apt-get update RUN apt-get install -y \ zip unzip curl \ && docker-php-ext-install pdo pdo_mysql COPY --from=composer:latest /usr/bin/composer /usr/bin/composer |
MySQLコンテナを作成
次にMySQLコンテナを作成していきます。
docker/database/
ディレクトリの直下にDockerfileを作成し、以下のようにしてください。
1 | FROM mysql:8.0 |
Nginxコンテナを作成
次にNginxコンテナを作成していきます。
docker/nginx/
ディレクトリの直下にDockerfileを作成し、以下のようにしてください。
1 2 | FROM nginx:alpine COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf |
docker/nginx/
ディレクトリの直下にdefault.confを作成し、以下のようにしてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | server { listen 80; server_name localhost; root /var/www/html/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass web:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
Laravelをインストール
次にLaravelをインストールしていきます。
まずは以下のコマンドでプロジェクトディレクトリに移動します。
1 | cd project-root |
以下のコマンドでコンテナを起動します。
1 | docker-compose up -d |
以下のコマンドでWebコンテナに入ります。
1 | docker-compose exec web bash |
以下のコマンドでLaravelをインストールします。
1 | composer create-project laravel/laravel . |
Laravel環境設定
次にLaravelの環境設定をしていきます。
まずは.env
設定を修正していきます。
1 2 3 4 5 6 | DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel_db DB_USERNAME=laravel_user DB_PASSWORD=laravel_password |
次にディレクトリの権限設定をしていきます。
まずはwebコンテナに入ります。
1 | docker-compose exec web bash |
次にコンテナ内で以下のコマンドを実行し、権限を変更していきます。
1 2 | chown -R www-data:www-data storage bootstrap/cache chmod -R 775 storage bootstrap/cache |
次にLaravelのマイグレーションを実行していきます。
1 | php artisan migrate |
ブラウザでhttp://localhost:8000
にアクセスし、Laravelアプリケーションの初期画面が表示されていれば成功です。
まとめ
今回はDockerでLaravelの環境構築をする手順について解説していきましたが、いかがだったでしょうか。
個人開発のみであればDockerは不要かもしれませんが、Dockerコンテナで開発環境を構築することにより、複数人でプロジェクトを進める場合でも同じ環境で開発を進めることができます。
Dockerを使った開発は必須となりつつありますので、是非、チャレンジしてみてください。