NGINX & PHP na Docker
Mając już Dockera potrzebujemy jeszcze docker-composer. A instalujemy go tak (warto sprawdzić numer wersji i w razie potrzeby go zmienić …
https://github.com/docker/compose/releases): https://docs.docker.com/compose/install/
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
I test:
docker-compose --version

Teraz spróbujemy obudzić http.
Tworzymy foldery gdzie będziemy działać: docker-http a w nim conf, images, log i www. Dodatkowo folder ngnix w images oraz conf.
Teraz tworzymy pieć plików:
1: docker-compose.yml w katalogu docker-http z zawartością:
nginx:
image: nginx
container_name: nginx
ports:
- "80:80"
volumes:
- ./www:/var/www
- ./conf/nginx:/etc/nginx/sites-enabled
- ./log:/var/log/nginx
2: Dockerfile w katalogu /docker-http/image/nginx z zawartością:
FROM phusion/baseimage
MAINTAINER author <autor@email.pl>
CMD ["/sbin/my_init"]
RUN apt-get update && apt-get install -y python-software-properties
RUN add-apt-repository ppa:nginx/stable
RUN apt-get update && apt-get install -y nginx
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN mkdir -p /etc/service/nginx
ADD start.sh /etc/service/nginx/run
RUN chmod +x /etc/service/nginx/run
EXPOSE 80
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
3: start.sh w katalogu /docker-http/image/nginx z zawartością:
#!/usr/bin/env bash
service nginx start
4: nginx.conf w katalogu /docker-http/conf/ngnix z zawartością:
server {
listen 80;
index index.html;
server_name nginx.test;
error_log /var/log/nginx_error.log;
access_log /var/log/nginx_access.log;
root /var/www;
}
5: index.html w katelogu /docker-http/www z zawartością:
Test serwera.
Hello world !!!
Następnie będąc w katalogu /docker-http uruchamiamy pobranie obrazu poleceniem:
docker build -t nginx images/nginx
Dalej będąc w katalogu /docker-http uruchamiamy polecenie:
docker-compose up -d
Test w przeglądarce https://ip_adres_serwera pokazuje że nginx działa prawidłowo.
Czas na PHP 7
Tworzymy foldery: php7 w conf i php7 w images.
Podobnie jak wcześniej dodajemy pliki:
1: Dockerfile w katalogu /docker-http/image/php7 z zawartością:
FROM phusion/baseimage
MAINTAINER author <autor@email.pl>
CMD ["/sbin/my_init"]
RUN apt-get update && apt-get install -y python-software-properties
RUN add-apt-repository ppa:nginx/stable
RUN apt-get update && apt-get install -y nginx
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN mkdir -p /etc/service/nginx
ADD start.sh /etc/service/nginx/run
RUN chmod +x /etc/service/nginx/run
EXPOSE 80
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
2: start.sh w katalogu /docker-http/image/php7 z zawartością:
#!/usr/bin/env bash
service nginx start
3: php-fpm.conf w katalogu /docker-http/conf/php7 z zawartością:
[global]
pid = /run/php7-fpm.pid
error_log = /var/log/php7/php7-fpm.log
daemonize = no
[www]
user = www-data
group = www-data
listen = 9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
4: modyfikuję też docker-compose.yml w katalogu /docker-http:
nginx:
image: nginx
container_name: nginx
ports:
- "80:80"
volumes:
- ./www:/var/www
- ./conf/nginx:/etc/nginx/sites-enabled
- ./log:/var/log/nginx
links:
- php7
php7:
image: php7
container_name: php7
volumes:
- ./conf/php7/php-fpm.conf:/etc/php7/fpm/php-fpm.conf
- ./www:/var/www
- ./log:/var/log/php7
5: Dodaję index.php w katelogu /docker-http/www z zawartością:
<?php
phpinfo();
?>
Następnie będąc w katalogu /docker-http uruchamiamy pobranie obrazu poleceniem:
docker build -t php7 images/php7
Dalej będąc w katalogu /docker-http uruchamiamy polecenie:
docker-compose up -d
Test w przeglądarce https://ip_adres_serwera pokazuje że nginx działa prawidłowo.
