diff --git a/compose.yml b/compose.yml index 709316ef..51423674 100644 --- a/compose.yml +++ b/compose.yml @@ -1,7 +1,19 @@ version: "3.8" services: + hira-chan_nginx: + image: hira-chan:nginx-1.0.0 + container_name: hira-chan_nginx + build: + context: . + dockerfile: ./docker/nginx/Dockerfile + ports: + - 80:80 + depends_on: + - hira-chan_app + tty: true + hira-chan_app: - image: hira-chan:app-2.0.0 + image: hira-chan:app-2.1.0 container_name: hira-chan_app build: context: . @@ -10,7 +22,6 @@ services: volumes: - .:/usr/src/app ports: - - 80:80 - 5173:5173 depends_on: - hira-chan_echo-server diff --git a/docker/app/Dockerfile b/docker/app/Dockerfile index ff390085..1628033f 100644 --- a/docker/app/Dockerfile +++ b/docker/app/Dockerfile @@ -26,6 +26,7 @@ RUN \ unzip \ wget \ zlib1g-dev \ + php-fpm \ php-ctype \ php-curl \ php-dom \ @@ -65,6 +66,7 @@ COPY --from=composer:2.5.5 /usr/bin/composer /usr/bin/composer # 設定ファイルをコピー COPY ./docker/app/php/php.ini /etc/php/8.1/cli/php.ini +COPY ./docker/app/php/www.conf /etc/php/8.1/fpm/pool.d/www.conf COPY ./docker/app/postfix/main.cf /etc/postfix/main.cf # コンテナ作成時に実行するスクリプトをコピー diff --git a/docker/app/bin/containerStart.sh b/docker/app/bin/containerStart.sh index 75321b65..85cad849 100644 --- a/docker/app/bin/containerStart.sh +++ b/docker/app/bin/containerStart.sh @@ -25,6 +25,7 @@ fi # 各種サービス起動 sudo su <<EOF service postfix start +service php8.1-fpm start EOF # 使用できないセッションの削除 @@ -33,7 +34,6 @@ screen -wipe # セッションの作成 screen -dmS vite screen -dmS queue -screen -dmS serve # vite セッションで vite を用いた自動ビルドを動作 screen -S vite -X stuff ' \ @@ -47,10 +47,4 @@ screen -S queue -X stuff ' \ php artisan queue:work \ \n' -# serve セッションで Laravel のサーバーを動作 -screen -S serve -X stuff ' \ - cd "$WORKDIR"; \ - php artisan serve --host 0.0.0.0 --port 80 \ -\n' - sleep infinity diff --git a/docker/app/php/www.conf b/docker/app/php/www.conf new file mode 100644 index 00000000..44ad2005 --- /dev/null +++ b/docker/app/php/www.conf @@ -0,0 +1,15 @@ +[www] +user = www-data +group = www-data + +listen = hira-chan_app:9000 +listen.owner = www-data +listen.group = www-data + +pm = dynamic +pm.max_children = 5 +pm.start_servers = 2 +pm.min_spare_servers = 1 +pm.max_spare_servers = 3 + +request_terminate_timeout = 3600 diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile new file mode 100644 index 00000000..33a9c898 --- /dev/null +++ b/docker/nginx/Dockerfile @@ -0,0 +1,6 @@ +FROM nginx:1.24.0 + +ENV TZ="Asia/Tokyo" +ENV LANG="ja_JP.UTF-8" + +COPY ./docker/nginx/conf.d /etc/nginx/conf.d diff --git a/docker/nginx/conf.d/default.conf b/docker/nginx/conf.d/default.conf new file mode 100644 index 00000000..90caa0f4 --- /dev/null +++ b/docker/nginx/conf.d/default.conf @@ -0,0 +1,39 @@ +server { + listen 80; + listen [::]:80; + root /usr/src/app; + + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-Content-Type-Options "nosniff"; + + index index.php index.html; + + charset utf-8; + + location = /favicon.ico { + access_log off; + log_not_found off; + } + location = /robots.txt { + access_log off; + log_not_found off; + } + + error_page 404 /index.php; + + location / { + try_files $uri $uri/ /index.php?$args; + } + + location ~ \.php$ { + root /usr/src/app/public; + fastcgi_pass hira-chan_app:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.(?!well-known).* { + deny all; + } +}