Docker für PHP-Entwickler: Grundkenntnisse
Nginx kann als Webserver verwendet werden, um statische Inhalte (z. B. HTML-, CSS- und JavaScript-Dateien) bereitzustellen.
Wenn ein Benutzer eine Seite von einem Webserver anfordert, nimmt der Webserver die Anforderung entgegen und sendet eine entsprechende Antwort an den Benutzer zurück.
Nginx ist ein sehr effizienter Open-Source-Webserver, der auch für Reverse-Proxy, HTTP-Lastausgleich und E-Mail-Proxy verwendet wird.
Wir konfigurieren Nginx in drei Schritten:
server {
listen 80 default_server;
root /var/www/html/public;
index index.html index.htm index.php;
server_name _;
charset utf-8;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
error_page 404 /index.php;
}
FROM ubuntu:18.04
LABEL maintainer="Kâmi Barut-Wanayo"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y gnupg tzdata \
&& echo "UTC" > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata
RUN apt-get update \
&& apt-get install -y curl zip unzip git supervisor sqlite3 \
nginx php7.2-fpm php7.2-cli \
php7.2-pgsql php7.2-sqlite3 php7.2-gd \
php7.2-curl php7.2-memcached \
php7.2-imap php7.2-mysql php7.2-mbstring \
php7.2-xml php7.2-zip php7.2-bcmath php7.2-soap \
php7.2-intl php7.2-readline php7.2-xdebug \
php-msgpack php-igbinary \
&& php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
&& mkdir /run/php \
&& apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& echo "daemon off;" >> /etc/nginx/nginx.conf
ADD default /etc/nginx/sites-available/default
Schritt 3: Wir erstellen unser Behälter-Bild mit demselben Befehl, den wir in „Abschnitt 5/13 – Die Dockerfile-Datei“ verwendet haben.
$ docker build -t kbarut/app:latest -f docker/app/Dockerfile docker/app