Alpine Linux, PHP, Nginx

快如闪电、超薄、生产加固: Alpine、PHP、Nginx docker 容器。(Lightning fast, super slim and production hardened: Alpine, PHP, Nginx docker container.)

Github stars Tracking Chart

Alpine Linux, PHP, Nginx

A super fast, super slim, production hardened PHP 7.3/7.4 and Nginx docker image built on Alpine Linux.

Perfect for horizontally distributed PHP and Laravel applications run within a container cluster.

Stack

  • Alpine Linux
  • PHP 7.3/7.4 & PHP-FPM
    • mysqli
    • pdo, pdo_mysql + pdo_sqlite
    • opcache
    • pcntl
    • bcmath
    • exif
    • mbstring
    • gd
    • xdebug-2.9 (Not loaded)
  • NGINX 1.16 (FastCGI web-server)
  • Composer 2 (PHP package manager)
    • hirak/prestissimo was previously globally installed, but is no longer required nor supported under Composer 2
  • Supervisor Daemon (Process manager)
  • Tooling
    • git
    • wget
    • bash

Usage

This image should not be directly built, it a starting point for your own Dockerfile.

Your Dockerfile should ADD an Nginx configuration file at the very least.

Lightweight example Dockerfile of running a brand new Laravel application

docker build -f example/Dockerfile .

XDebug

XDebug is included with the image, but not enabled for the PHP runtime.
Lazily loading the xdebug module through command-line can be done via

php -d zend_extension=xdebug ...

Logging Output

A docker container should have the command it runs output to stdout and stderr, so the container runner (e.g. docker-compose / Kubernetes) can see this output and forward it to a logging system.

PHP

PHP-FPM has workers that can emit to php://stdout and php://stderr. These are captured by PHP-FPM's master process and can be logged to a single error log file. However, there is no way to send these to two separate files.

Additionally, a further file symlink would be needed to forward this output to /dev/stdout. But, PHP-FPM does not run as a user with the privilege to create this symlink or write to the file. Only root can write to /dev/stdout.

Possible Solutions

  1. Have php workers write to a file in a known location, /var/www/storage/logs/stdout.log.
  2. A process running as root tails this file and forwards it to /dev/stdout
  3. Another process truncates this file occasionally to prevent it from filling up the file system

Main metrics

Overview
Name With Ownerethical-jobs/aphex
Primary LanguageDockerfile
Program languageDockerfile (Language Count: 2)
PlatformLinux
License:MIT License
所有者活动
Created At2016-10-03 23:35:05
Pushed At2022-01-07 03:20:32
Last Commit At
Release Count18
Last Release Namev9.0.1 (Posted on )
First Release Name7.1.1 (Posted on 2017-01-25 11:03:22)
用户参与
Stargazers Count60
Watchers Count1
Fork Count13
Commits Count129
Has Issues Enabled
Issues Count4
Issue Open Count1
Pull Requests Count6
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private