We cover the docker logs
command. We need to make a tweak so everything outputs to stdout or stderr. If we do that successfully, we can use Docker's logging mechanism to see output from Nginx, PHP, and Supervisord.
The only change we need to make:
PHP-FPM
In our php-fpm.conf
file, adjust the error_log
to error_log = /proc/self/fd/2
.
Nginx
Nginx is easier - we can just adjust the Dockerfile by symlinking the nginx error and access logs to stdout and stderr:
FROM ubuntu:18.04
LABEL maintainer="Chris Fidao"
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
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
ADD default /etc/nginx/sites-available/default
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ADD php-fpm.conf /etc/php/7.2/fpm/php-fpm.conf
CMD ["nginx"]
And of course, we need to rebuild the image:
docker build -t shippingdocker/app:latest \
-f docker/app/Dockerfile \
docker/app