m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

docker-composeでnginx+php(cakeph4)+MySQLの環境を構築する

構成(雑)

f:id:m_shige1979:20210908070301p:plain

手順

docker-compose.yml

version: "3"

services:
  # web
  web:
    # コンテナ名
    container_name: web
    # image
    image: nginx:alpine
    # 他のコンテナ起動後に起動するように制御
    depends_on:
      - php
      - db
    # ポート開放
    ports:
      - "80:80"
    # ボリューム
    volumes:
      - "./nginx/conf.d:/etc/nginx/conf.d"
      - "./app:/var/www/html"

  # app
  php:
    # コンテナ名
    container_name: php
    # ビルド
    build: ./dockers/php
    # コンテナに入るようにできる
    tty: true
    # 他のコンテナが起動後に動くように制御
    depends_on:
      - db
    # ボリューム
    volumes:
      - "./app:/var/www/html"
    # ポート
    ports:
      - 9000:9000
      - 4321:4321
    # 環境変数
    environment:
      TZ: "Asia/Tokyo"
  # DB
  db:
    # コンテナ名
    container_name: mysql
    # イメージ
    image: mysql
    #
    tty: true
    # 再起動
    restart: always
    # 環境変数
    environment:
      MYSQL_ROOT_USER: "root"
      MYSQL_ROOT_PASSWORD: "password"
      MYSQL_DATABASE: sample
      MYSQL_USER: hoge
      MYSQL_PASSWORD: foofoo
      TZ: "Asia/Tokyo"
    # ボリューム
    volumes:
      - mysql_data:/var/lib/mysql
    # ポート
    ports:
      - 3306:3306

# 名前付きボリュームをdockerホストの管理下で作成
volumes:
  mysql_data: {}

nginx/conf.d/vhost1.conf

server {
    listen   80;
    listen   [::]:80;
    server_name example.com;

    root   /var/www/html/webroot;
    index  index.php;

    #access_log /var/www/example.com/log/access.log;
    #error_log /var/www/example.com/log/error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass   php:9000;
        fastcgi_index index.php;
        fastcgi_intercept_errors on;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

dockers/php/Dockerfile

# PHPイメージ
FROM php:7.4.23-fpm-buster

# 関連パッケージをインストール
RUN apt-get update && \
    apt-get install -y vim && \
    apt-get install -y unzip && \
    apt-get install -y libicu-dev && \
    docker-php-ext-install intl && \
    docker-php-ext-install pdo_mysql

# composerをインストール
COPY --from=composer /usr/bin/composer /usr/bin/composer

phpイメージ用のDockerfileでphpのパッケージインストーラーであるcomposerをインストールしておく

f:id:m_shige1979:20210908065000p:plain

参考

インストール - 4.x

Docker の Nginx + MySQL 環境で CakePHP 4 を動かす / Twin Turbo Computing

CakePHP4 の開発環境をDockerを使って構築する - Qiita

github

github.com