gpt4 book ai didi

php - 带有两个服务的简单 docker-compose : nginx and php

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:03 26 4
gpt4 key购买 nike

我从 Docker 开始和 nginx ,我正在尝试设置一个运行的两个容器环境:

  • nginx:latest一方面
  • php:fpm在另一边

我在使用 php-fpm 时遇到问题:我总是收到 502 Bad Gateway 错误。

我的设置很简单($TEST_DIR 是我的工作目录)。

我的 Docker 组合配置 TEST_DIR/docker-compose.yml :

nginx:
image: nginx
ports:
- "8080:80"
volumes:
- ./www:/usr/share/nginx/html
- ./conf/nginx.conf:/nginx.conf
- ./logs/nginx:/var/log/nginx
links:
- php:php
command: nginx -c /nginx.conf

php:
image: php:fpm
ports:
- "9000:9000"
volumes:
- ./www:/var/www/html

nginx 配置 $TEST_DIR/conf/nginx.conf :

user  nginx;
worker_processes 1;
pid /var/run/nginx.pid;

events {
worker_connections 2048;
multi_accept on;
use epoll;
}

http {

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
gzip on;
gzip_disable "msie6";
open_file_cache max=100;


upstream php-upstream {
server php:9000;
}

server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

# Pass PHP scripts to PHP-FPM
location ~* \.php$ {
fastcgi_pass php-upstream;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param HTTPS off;
}

error_log /var/log/nginx/php_error.log;
access_log /var/log/nginx/php_access.log;
}
}

daemon off;

然后,我将我的 PHP 内容放在与我的 docker-compose.yml 相同的目录中:

$TEST_DIR/www/test.php

<?php phpinfo(); ?>

如果我使用 docker-compose up 启动基础设施然后转到 localhost:8080/test.php ,然后我得到 502 Bad Gateway以及来自 nginx 的以下错误:

[error] 6#6: *1 connect() failed (113: No route to host) while connecting to upstream, client: 172.17.42.1, server: localhost, request: "GET /phpinsfo2.php HTTP/1.1", upstream: "fastcgi://172.17.0.221:9000", host: "localhost:8080"

是什么导致了错误?

最佳答案

我终于成功了。

问题是我的主机 (Fedora 21) 启用了防火墙。

这样做:systemctl stop firewalld 解决了我的问题。

显然这是 Red Hat Linux 的一个众所周知的问题:
Bug 1098281 - Docker interferes with firewall initialisation via firewalld

关于php - 带有两个服务的简单 docker-compose : nginx and php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com