docker-composeでnginx+php(cakeph4)+MySQLの環境を構築する
構成(雑)
手順
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をインストールしておく
↓
参考
Docker の Nginx + MySQL 環境で CakePHP 4 を動かす / Twin Turbo Computing
CakePHP4 の開発環境をDockerを使って構築する - Qiita