2015-07-10 18 views
5

Tôi bắt đầu với Dockernginx, 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ên
  • php: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?

+1

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' –

+1

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

+0

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

Trả lời

2

Cuối cùng tôi đã cố gắng làm cho nó hoạt động.

Vấn đề là máy chủ lưu trữ của tôi (Fedora 21) đã bật tường lửa.

Vì vậy, thực hiện: systemctl stop firewalld đã giải quyết được sự cố của tôi.

Rõ ràng đây là một vấn đề nổi tiếng tại Red Hat Linux:
Bug 1098281 - Docker interferes with firewall initialisation via firewalld

+0

Tôi nghĩ rằng docker đã cập nhật iptables như là một phần của ma thuật mạng. Tôi đoán có một vài kinks để được làm việc ra vẫn còn. Điều này đã giúp tôi. Cảm ơn vì đăng! –

+0

Đang tắt tường lửa chưa? Theo như tôi biết lỗi đã bị đóng. – MauganRa

Các vấn đề liên quan