Tôi bắt đầu với Docker và nginx, và tôi đang cố gắng để thiết lập một môi trường hai thùng chạy:Simple Docker-soạn với hai dịch vụ: nginx và php
nginx:latest
ở một bênphp:fpm
ở phía bên kia
Tôi gặp sự cố với php-fpm: Tôi luôn gặp lỗi 502 Lỗi cổng xấu.
Thiết lập của tôi rất đơn giản ($TEST_DIR
là thư mục làm việc của tôi).
My Docker soạn cấu hình 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
Các nginx cấu hình $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;
Sau đó, tôi đưa nội dung PHP của tôi trong cùng thư mục với tôi docker-compose.yml
:
$TEST_DIR/www/test.php
<?php phpinfo(); ?>
Nếu tôi bắt đầu sử dụng hạ tầng docker-compose up
và sau đó đi đến localhost:8080/test.php
, sau đó tôi nhận được 502 Bad Cổng và các lỗi sau từ 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"
gì gây ra lỗi?
Tôi không biết nếu nó giải quyết vấn đề nhưng có vẻ như rằng có một lỗi đánh máy trong định nghĩa của khối lượng cho container php './www:/var/wwww/html' –
Tôi đã xác minh rằng sửa chữa lỗi đánh máy trong' ./www:/var/wwww/html' cho phép tôi xem nội dung của trang '/ test.php'. Mặc dù lỗi của bạn 'connect() không thành công (113: Không có tuyến đường để lưu trữ)' có thể chỉ ra một vấn đề mà tôi không thể sinh sản. Bạn đang sử dụng phiên bản mới nhất của cả docker và docker-compose? – Thomasleveil
Tôi đang sử dụng ** docker 1.7.0 build 0baf609 ** và ** docker-compose 1.3.1 **. Sự kiện với lỗi chính tả đó, tôi vẫn gặp sự cố tương tự: Máy chủ nginx phục vụ tệp tĩnh đúng cách, nhưng tệp php không được định tuyến đến php-fpm, tôi vẫn gặp lỗi 502 Bad Gateway Vấn đề là tôi không hiểu nếu yêu cầu được chuyển đến php fpm hay không ... Làm thế nào tôi có thể kiểm tra điều đó? – Clement