Software

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
Jak widać działa 🙂

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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *