Gần đây tôi đã bắt đầu chuyển sang các tính năng mạng của Docker 1.9 và Docker-Compose 1.5 để thay thế bằng cách sử dụng liên kết.
Cho đến nay với các liên kết, không có vấn đề gì với nginx kết nối với máy chủ fastcgi php5-fpm của tôi nằm ở một máy chủ khác trong một nhóm thông qua docker-comp. Tuy nhiên, mới đây khi tôi chạy vùng chứa docker-compose --x-networking up
php-fpm, mongo và nginx khởi động, tuy nhiên nginx thoát ngay lập tức với[emerg] 1#1: host not found in upstream "waapi_php_1" in /etc/nginx/conf.d/default.conf:16
Tuy nhiên, nếu tôi chạy lại lệnh docker-comp khi các vùng chứa php và mongo đang chạy (nginx đã thoát), nginx sẽ bắt đầu và hoạt động tốt từ đó trở đi.
Đây là docker-compose.yml
tệp của tôi :
nginx:
image: nginx
ports:
- "42080:80"
volumes:
- ./config/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
php:
build: config/docker/php
ports:
- "42022:22"
volumes:
- .:/var/www/html
env_file: config/docker/php/.env.development
mongo:
image: mongo
ports:
- "42017:27017"
volumes:
- /var/mongodata/wa-api:/data/db
command: --smallfiles
Đây là của tôi default.conf
cho nginx:
server {
listen 80;
root /var/www/test;
error_log /dev/stdout debug;
access_log /dev/stdout;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /index.php$is_args$args;
}
location ~ ^/.+\.php(/|$) {
# Referencing the php service host (Docker)
fastcgi_pass waapi_php_1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# We must reference the document_root of the external server ourselves here.
fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}
Làm cách nào để nginx hoạt động chỉ với một cuộc gọi soạn thư trên docker?