Yeni Cevap
Docker Compose güncellendi. Artık sürüm 2 dosya biçimine sahipler .
Sürüm 2 dosyaları, Compose 1.6.0+ tarafından desteklenir ve 1.10.0+ sürümünün Docker Engine'i gerektirir.
Artık Docker'ın ağ oluşturma özelliğini destekliyorlar ve çalıştırıldığında myapp_default adlı varsayılan bir ağ kuruyorlar.
Gönderen onların belgelerine Dosyanızın aşağıdaki gibi görünecektir:
version: '2'
services:
web:
build: .
ports:
- "8000:8000"
fpm:
image: phpfpm
nginx
image: nginx
Bu kapsayıcılar varsayılan myapp_default ağına otomatik olarak eklendiğinden , birbirleriyle konuşabilirler. Daha sonra Nginx yapılandırmasına sahip olursunuz:
fastcgi_pass fpm:9000;
Ayrıca yorumlarda @treeface tarafından belirtildiği gibi, PHP-FPM'nin 9000 numaralı bağlantı noktasını dinlediğinden emin olmayı unutmayın, bu, /etc/php5/fpm/pool.d/www.conf
ihtiyacınız olan yerde düzenleme yaparak yapılabilir listen = 9000
.
Eski Cevap
Aşağıdakileri Docker / Docker compose'un eski sürümünü kullananlar için burada tuttum ve bilgi almak istiyorum.
Bu soruya bir cevap bulmaya çalışırken Google'da bu soruya sürekli tökezledim, ancak docker-compose üzerindeki Q / A vurgusu nedeniyle aradığım şey tam olarak değildi (ki bu yazım sırasında yalnızca deneysel desteğe sahiptir) docker ağ özellikleri). İşte öğrendiklerimle ilgili görüşüm.
Docker, ağ özelliği lehine yakın zamanda bağlantı özelliğini kullanımdan kaldırdı
Bu nedenle Docker Networks özelliğini kullanarak bu adımları izleyerek kapsayıcıları bağlayabilirsiniz. Seçeneklerle ilgili tam açıklamalar için daha önce bağlantısı verilen belgelerde okuyun.
Önce ağınızı oluşturun
docker network create --driver bridge mynetwork
Ardından, 9000 numaralı bağlantı noktasını açmanızı ve yeni ağınıza ( mynetwork
) atamanızı sağlayarak PHP-FPM kabınızı çalıştırın .
docker run -d -p 9000 --net mynetwork --name php-fpm php:fpm
Burada önemli --name php-fpm
olan isim olan komutun sonundaki kısımdır, buna daha sonra ihtiyacımız olacak.
Daha sonra Nginx konteynırınızı tekrar çalıştırın oluşturduğunuz ağa atayın.
docker run --net mynetwork --name nginx -d -p 80:80 nginx:latest
PHP ve Nginx kapsayıcıları için --volumes-from
gerektiğinde komutlar vb. Ekleyebilirsiniz .
Şimdi Nginx yapılandırması geliyor. Buna benzer bir şeye benzemesi gereken:
server {
listen 80;
server_name localhost;
root /path/to/my/webroot;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
fastcgi_pass php-fpm:9000;
Konum bloğundaki işaretine dikkat edin . Bu php-fpm
, limanda konteynır diyor 9000
. Bir Docker köprü ağına kapsayıcılar eklediğinizde, hepsi otomatik olarak kapsayıcı adlarını IP adreslerine yerleştiren bir ana bilgisayar dosyası güncellemesi alır. Dolayısıyla, Nginx, php-fpm
daha önce adlandırdığınız ve mynetwork
Docker ağınıza atadığınız PHP-FPM kapsayıcısıyla iletişim kuracağını bildiğini gördüğünde .
Bu Nginx yapılandırmasını Docker konteynerinizin derleme işlemi sırasında veya daha sonra size kalmış olarak ekleyebilirsiniz.