Giter VIP home page Giter VIP logo

fpm-nginx's Introduction

FPM/Nginx - Dockerhub Repo

Build Status

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

  • Composer (with hirak/prestissimo for parallel dependency installation)
  • PHP Extensions
    • mbstring
    • pdo_mysql
    • gd
    • opcache - Automatically enabled when APP_ENV=production
    • xdebug - Only enabled when XDEBUG_ENABLE=true. Only installed when XDEBUG_ENABLE=true when building the container
  • Adding a default virtual host serving apps from /var/www/html/public

For Laravel applications, see bkuhl/laravel-fpm-nginx.

For a container to run cron and other CLI tasks, 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:latest

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

fpm-nginx's People

Contributors

bkuhl avatar alexknutson avatar rafikfarhad avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.