Dockerに触る
今までローカル開発環境(Xampp)でPHPの学習をしていたのですが、友人と一緒にWEBアプリを作ろうという話になり、Dockerで環境構築することに決めました。
...と数カ月前に思い立ったものの、結局資格勉強やら遊びやらYouTubeのショート見漁ったりで全然やっていませんでした。(我ながらカスですね)
Docker Desktopのインストールまでは終わったものの、WLS2もmysqlもPHPもインストールしてませんでした。
なので本日行った作業は、大きく分けて下記のようになります。
| 項番 | ページ内リンク |
|---|---|
| 1 | プロジェクト構成の準備 |
| 2 | Dockerfileの作成(PHP拡張機能) |
| 3 | 実装 docker-compose.ymlの構成 |
| 4 | DBに接続できるか試す |
プロジェクト構成の準備
app-create/
└── 作成予定のアプリ名/
├── docker-compose.yml
├── Dockerfile
├── init.sql
└── src/
└── index.php
db-test.php
src/にPHPファイルを置く構成に決めました。
Dockerfileの作成(PHP拡張機能)
Dockerfile
FROM php:8.2-apache
RUN docker-php-ext-install pdo pdo_mysql
PHPのバージョンと、DBに接続するための拡張機能「pdo_mysql」を追加しました。
docker-compose.ymlの構成
docker-compose.yml
version: '3.8'
services:
web:
build: .
container_name: ***
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
depends_on:
- db
db:
image: mysql:latest
container_name: ***
environment:
MYSQL_ROOT_PASSWORD: ***
MYSQL_DATABASE: ***
MYSQL_USER: ***
MYSQL_PASSWORD: ***
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: ***
ports:
- "8081:80"
environment:
PMA_HOST: ***
PMA_USER: ***
PMA_PASSWORD: ***
depends_on:
- db
volumes:
db_data: {}
DBに接続できるか試す
db-test.php
<?php
try {
$pdo = new PDO("mysql:host=okinawa-db;dbname=okinawa_spots", "s_user", "s_pass");
echo "PDOでMySQLに接続成功!";
} catch (PDOException $e) {
echo "接続失敗: " . $e->getMessage();
}
?>
DBに無事接続できました。
まとめ
うん、ガチの底辺エンジニアとしてはこんなものですかね。
ここから先も色々やっている(というか記載していること以外の作業のほうが多い)のですが、書くの疲れたんでここら辺で終わります。
全然参考にならない&普通に本やYouTube見ながら環境構築したほうが確実なので皆さんマネしないでね。