目錄結構
➜ Study tree
├── conf
├── docker-compose.yaml
├── nginx
│ ├── conf
│ │ └── laravel.conf
│ └── html
│ └── index.php
index.php
<?php
/**
* Created by OrangBus
* User email: orangbus40400@gmail.com
* website: orangbus.cn
* blog: doc.orangbus.cn
* github: github.com/orangbus
*/
echo phpinfo();
nginx.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php8:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /html$fastcgi_script_name;
include fastcgi_params;
}
}
重點說明
fastcgi_pass php8:9000;
php8: php容器的名稱,如果你想配置多個php版本,只需要將php的配置複製一份就可以,填寫對應的php容器名稱
php8: # php的容器名稱
image: php:8.0-fpm
restart: always
volumes:
- ./nginx/html:/html
--------------------------------
php74: # 對應的nginx配置檔案為:fastcgi_pass php74:9000;
image: php:8.0-fpm
restart: always
volumes:
- ./nginx/html:/html
fastcgi_param SCRIPT_FILENAME /html$fastcgi_script_name;
/html :php專案對映到 【php 容器的目錄】(紅色)
docker-compose
version: '3.5'
services:
nginx:
image: nginx:latest
restart: always
ports:
- 8010:80
volumes:
- ./nginx/html/:/usr/share/nginx/html # 注意點一
- ./nginx/conf/:/etc/nginx/conf.d/
links:
- php8
php8:
image: php:8.0-fpm
restart: always
volumes:
- ./nginx/html:/html #注意點二
注意點一:
./nginx/html :本機你的php專案地址
/usr/share/nginx/html: nginx預設的訪問地址
注意點二:
./nginx/html :本機你的php專案地址
/html: 這裡地址是將你本地的php程式碼對映到php的容器當中,一般是和你nginx配置的地址是一致的 (紅色)
Tip:請留意兩處紅色的區域的關聯,這樣一個簡單的nginx+php關聯的環境就配置成功了。
踩坑指南:
當使用-link
時,連線容器的自定義埠將失效,舉例
version: '3.5'
services:
php8:
image: php:8.0-fpm
restart: always
volumes:
- ./nginx/html:/html
links: # 如果使用 links ,當我們php程式中填寫mysql埠的時候應該是 3306 而不是 3307,但是我們外部是需要用3307埠去連線mysql的
- mysql
mysql:
image: mysql:latest
ports:
- 3307:3306
本作品採用《CC 協議》,轉載必須註明作者和本文連結