Docker環境構築(PHP+Nginx+MySQL)

スポンサーリンク
スポンサーリンク

簡単な構成で、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

コメント

タイトルとURLをコピーしました