Windows DesktopでもMacBookでも、
同じ開発環境でPHPを書きたい!
そんな思いがあったので、Dockerは未熟レベル、WSL2に関しては知識0の状態から、
エラーと戦いながら手探りで環境構築してみました。(環境自体はあくまで学習用途)
※自分用のメモ書きなので理解してる範囲の説明は省略
バージョン
- Windows 11 Home(バージョン22H2)
- Docker Desktop 4.19.0
- docker-compose 1.27.4
- PHP 8.2.0
- mysql 5.7
- Apache 2.4.56
WSL2(Ubuntu)をインストール
PowerShell(管理者権限)でインストールコマンドを入力
PS C:\Users\xxx> wsl --install
インストールが終わるとUbuntuが立ち上がる
ユーザー名とパスワードの設定を入力したらUbuntuが使えるようになる
コマンドで起動状況が確認できる
PS C:\Users\xxx> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
念のためにWSL 2 を既定のバージョンとして設定
PS C:\Users\xxx> wsl --set-default-version 2
公式ドキュメントはこちら
上手くいかなかった際はこちらを確認
Docker Desktop for Windowsをインストール
Docker Desktop公式ページからインストールできる
※最新バージョンである4.20.1をインストールしたところ、アプリ内でエラー文が表示された。
対処法を調べたが解決できず、Twitterで検索したところ他にも同じような不具合が発生しているようなので、今回はバージョン4.19.0をインストール
Ubuntuを最新状態に
パッケージ情報を更新
sudo apt update
パッケージを更新
sudo apt upgrade
ついでにtreeコマンドを使えるように
sudo snap install tree
DockerでLAMP環境を構築する
今回のディレクトリ構造、docker-compose.ymlファイル、Dockerファイルの内容は下記の記事を参考に(ほぼ丸パクリ)しました。
docker-compose.ymlとDockerfileの書き方は現在学習中です。
ディレクトリ構造
.
├── docker
│ └── php
│ └── Dockerfile
├── docker-compose.yml
└── src
└── index.php
docker-compose.yml
version: '3'
services:
app:
build: ./docker/php
volumes:
- ./src:/var/www/html
ports:
- 80:80
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- 3306:3306
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
Dockerfile
FROM php:8.2-apache
RUN apt-get update \
&& apt-get install -y libpq-dev \
&& docker-php-ext-install pdo_mysql pdo_pgsql
起動
# .ymlファイルがある場所で入力
docker-compose up -d
mysqlに接続
docker exec -it mysql mysql -p