Bu yazımda docker kullanarak Nginx web server üzerinde php projemizi nasıl çalıştırabiliriz onu anlatacağım.
Öncelikle aşağıdaki şekilde bir proje dizini yaratıyoruz.
Öncelikle nginx üzerinde projemizi çalıştırabilmek için bir config dosyası yazıyoruz.
Nginx’in default gelen config dosyası php dosyalarını çalıştırmak için ayarlı değildir. Bu nedenle bu işlemi yapıyoruz.
# /nginx/default.conf
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Daha sonra Dockerfile dosyamızı yazıyoruz. Dockerfile dosyamızın içerisindeki COPY default.conf /etc/nginx/conf.d ile kendi config dosyamızı nginx’in config dosyasıyla değiştiriyoruz.
# /nginx/Dockerfile
FROM nginx:latest
COPY default.conf /etc/nginx/conf.d/
Son olarak docker-compose.yml dosyamızı aşağıdaki şekilde yazıyoruz.
# docker-compose.yml
version: '2'
services:
web-server:
build: ./nginx # => nginx klasöründe bulunana Dockerfile dosyasını çalıştırır.
ports:
- 8080:80 # => Web server'a ait 80 portu dışarıya 8080 portundan aktarıldı.
volumes:
- ./:/usr/share/nginx/html # => Nginx çalışma dizini bulunduğumuz dizinle ilişkilendirildi.
- ./logs:/var/log/nginx # => Nginx log dizini, projemizin logs dizini olarak ilişkilendirildi.
links:
- php # => Web sunucumuzun PHP imajıyla konuşabilmesi için iki servis ilişkilendirildi.
php:
image: php:7.1-fpm
volumes:
- ./:/var/www/html
Tüm bu dosyaları ayarladıktan sonra terminalimizi açıp proje dizinine geliyoruz. Proje dizininde docker-compose up -d komutunu çalıştırıyoruz. Bu işlem ile dosyadaki tüm satırlar sırayla işleme alınarak konteynerlerimiz ayağa kalkar.