Jawaban Baru
Docker Compose telah diperbarui. Mereka sekarang memiliki format file versi 2 .
File versi 2 didukung oleh Compose 1.6.0+ dan memerlukan Mesin Docker versi 1.10.0+.
Mereka sekarang mendukung fitur jaringan Docker yang ketika dijalankan mengatur jaringan default yang disebut myapp_default
Dari dokumentasinya, file Anda akan terlihat seperti di bawah ini:
version: '2'
services:
web:
build: .
ports:
- "8000:8000"
fpm:
image: phpfpm
nginx
image: nginx
Karena kontainer ini secara otomatis ditambahkan ke jaringan default myapp_default, mereka akan dapat saling berbicara. Anda kemudian akan memiliki konfigurasi Nginx:
fastcgi_pass fpm:9000;
Juga seperti yang disebutkan oleh @treeface di komentar ingat untuk memastikan PHP-FPM mendengarkan pada port 9000, ini dapat dilakukan dengan mengedit di /etc/php5/fpm/pool.d/www.conf
tempat yang Anda perlukanlisten = 9000
.
Jawaban Lama
Saya telah menyimpan di bawah ini di sini untuk mereka yang menggunakan versi lama penulisan Docker / Docker dan ingin informasinya.
Saya terus tersandung pada pertanyaan ini di google ketika mencoba menemukan jawaban untuk pertanyaan ini tetapi itu tidak cukup apa yang saya cari karena penekanan Q / A pada docker-compose (yang pada saat penulisan hanya memiliki dukungan eksperimental untuk fitur jaringan buruh pelabuhan). Jadi inilah pendapat saya tentang apa yang telah saya pelajari.
Docker baru - baru ini menghentikan fitur tautannya demi fitur jaringannya
Oleh karena itu, dengan menggunakan fitur Jaringan Docker Anda dapat menautkan kontainer dengan mengikuti langkah-langkah berikut. Untuk penjelasan lengkap tentang opsi, baca di dokumen yang ditautkan sebelumnya.
Pertama buat jaringan Anda
docker network create --driver bridge mynetwork
Selanjutnya jalankan penampung PHP-FPM Anda memastikan Anda membuka port 9000 dan menetapkan ke jaringan baru Anda ( mynetwork
).
docker run -d -p 9000 --net mynetwork --name php-fpm php:fpm
Bagian penting di sini adalah --name php-fpm
di akhir perintah yang merupakan namanya, kita akan membutuhkannya nanti.
Selanjutnya jalankan container Nginx Anda lagi tetapkan ke jaringan yang Anda buat.
docker run --net mynetwork --name nginx -d -p 80:80 nginx:latest
Untuk wadah PHP dan Nginx, Anda juga dapat menambahkan --volumes-from
perintah dll sesuai kebutuhan.
Sekarang sampai pada konfigurasi Nginx. Yang seharusnya terlihat seperti ini:
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;
}
}
Perhatikan fastcgi_pass php-fpm:9000;
di blok lokasi. Itu mengatakan wadah kontak php-fpm
di pelabuhan 9000
. Ketika Anda menambahkan kontainer ke jaringan jembatan Docker, mereka semua secara otomatis mendapatkan pembaruan file host yang menempatkan nama kontainer mereka pada alamat IP mereka. Jadi ketika Nginx melihat bahwa ia akan tahu untuk menghubungi wadah PHP-FPM yang Anda beri nama php-fpm
sebelumnya dan ditugaskan ke Andamynetwork
jaringan Docker .
Anda dapat menambahkan konfigurasi Nginx itu selama proses pembuatan container Docker Anda atau setelahnya terserah Anda.