簡単な構成で、dockerでPHP、Nginx、MySQLを構築していきます。
ディレクトリ作成
$ mkdir project
$ cd project
$ mkdir src
$ mkdir php
$ mkdir nginx
PHP用のDockerファイル作成
$ cd php
$ vi Dockerfile
FROM php:7.4.7-fpm
RUN docker-php-ext-install pdo_mysql
Nginxの設定ファイルを作成
server {
listen 80;
root /var/www/;
index index.php index.html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
docker-compose設定
docker-composeを利用することで、コンテナ同士の依存関係やポートフォワーディング等の設定をyaml形式のファイルで管理することができます。
・docker-compose.ymlファイルを作成します。
$ vi docker-compose.yml
version: '3'
services:
web:
image: nginx:latest
ports:
- "8000:80"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./src:/var/www/
app:
build: ./php
#image: php:7.4-fpm
depends_on:
- mysql
volumes:
- ./src:/var/www/
mysql:
image: mysql:latest
environment:
MYSQL_DATABASE: test
MYSQL_USER: root
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./mysql/mysql-data:/var/lib/mysql
コンテナ起動
docker-compose up -d
ブラウザからhttp:// localhost:8000アクセスできることを確認してみましょう。
コンテナの停止は以下のコマンドを実行します。
docker-compose stop
コメント