因此,我有一个带有 nginx 和 php-fpm 的基本 docker 设置,并将其部署到 AWS ECS:
nginx 的 Dockerfile
# Install nginx
FROM --platform=linux/amd64 nginx:latest
# Use custom configs
ADD nginx/conf/nginx.conf /etc/nginx/conf.d/default.conf
Nginx 配置文件
server {
server_name localhost;
root /usr/share/nginx/html/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass localhost:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
php-fpm 的 Dockerfile
# Install nginx
FROM --platform=linux/amd64 php:8.1-fpm
# Add the files
COPY dist /usr/share/nginx/html
问题
注意:当我部署到 AWS 时,此设置运行良好。
但是当我在本地尝试这些图像时,它不起作用(网关错误),因为localhost:9000
在 nginx 配置中找不到 nginx 容器的定义。由于 AWSVPC 网络模式,我必须使用 localhost。
我如何才能让它在本地工作而无需编辑太多内容?当我在本地运行容器时是否有配置选项?现在,我像这样运行它们:
docker run -p 8001:80 -d --name $DEPLOY_NAME_NGINX $DEPLOY_NAME_NGINX
docker run -d --name $DEPLOY_NAME_PHP_FPM $DEPLOY_NAME_PHP_FPM