Sign inSign up

bkuhl/fpm-nginx

By bkuhl

Updated over 1 year ago

A simple, lightweight container that uses S6 to manage processes under the covers.

Image
2

50K+

bkuhl/fpm-nginx repository overview

FPM/Nginx

Docker Build Docker Pulls Automated

This container is intended to run Laravel applications and thus comes with a few items to assist:

The laravel-* tag contains:

For a container to run cron, migrations or queue workers for Laravel applications, check out bkuhl/php

Why 2 processes in 1 container?

  1. DNS issues - Both the fpm/nginx containers need to be redeployed when your application is updated. Nginx maintains an internal DNS cache, so while Docker may ensure zero downtime for fpm containers, nginx's internal workings can still create problems. The only way to solve this (that I've found) is to restart the nginx process. Having them on the same container eliminates the problem.
  2. Laravel Mix - The front/backend of applications are kind of coupled when using something like Laravel Mix. The index of assets it creates need to be on both containers and running these separately is possible, but redundant.

Adding Processes

This container uses S6 Overlay as it's process monitoring solution. Add a new directory to services.d with a run file in it where run in a shell script that kicks off the process. The rest is taken care of for you.

Example Dockerfile

FROM bkuhl/fpm-nginx:fpm-7_nginx-1

WORKDIR /var/www/html

# Copy the application files to the container
ADD --chown=www-data:www-data  . /var/www/html

USER www-data

    # production-ready dependencies
RUN composer install  --no-interaction --optimize-autoloader --no-dev --prefer-dist \

    # keep the container light weight
    && rm -rf /home/www-data/.composer/cache

USER root

Tag summary

Content type

Image

Digest

sha256:bbe11d74e

Size

137.5 MB

Last updated

over 1 year ago

docker pull bkuhl/fpm-nginx