既然您正在询问多容器环境,那么我相信您正在为应用程序使用Docker compose.为了更详尽地回答您的问题.
1)假设我们在docker compose中有三个容器,一个用于Nginx,一个用于laravel的fpm容器,另一个用于magento的fpm容器.那么您的docker compose文件将如下所示.以下片段仅是示例
Nginx:
image: Nginx:latest
ports:
- "80:80"
- "443:443"
links:
- "fpmlaravel"
- "fpmmagento"
fpmlaravel:
image: PHP:latest
volumes:
- ./data/laravel/:/var/www/laravel
links:
- "Nginx"
fpmmagento:
image: PHP:latest
volumes:
- ./data/magentoroot/:/var/www/magento
links:
- "Nginx"
magento的Nginx vhost文件将是
# PHP back end
upstream backend {
server fpmmagento:9000;
}
server {
listen 80;
server_name www.magento.dev magento.dev;
root /var/www/magento;
location ~ \.PHP${
fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
fastcgi_pass backend;
fastcgi_index index.PHP;
include fastcgi_params;
fastcgi_param HTTPS $fastcgi_https;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param MAGE_RUN_TYPE $mage_type;
fastcgi_param MAGE_RUN_CODE $mage_code;
}
}
对于fpm,请确保fpm映像正在侦听端口9000.
2)是,可以有一个Nginx容器,该容器基于Nginx虚拟主机在不同的fpm后端之间路由.但是,通常,这被认为是不好的做法,因为Docker的主要思想是隔离您的应用程序.