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.