Skip to content

Commit

Permalink
Upgraded to php84 and some pipeline improvementes (#38)
Browse files Browse the repository at this point in the history
* Upgraded to php84 and some pipeline improvementes

* Rename master branch to main
  • Loading branch information
erseco authored Dec 9, 2024
1 parent bda29b5 commit 59d3b75
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 52 deletions.
11 changes: 6 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ jobs:
if [[ $GITHUB_REF == refs/tags/* ]]; then
TAGS="$TAGS,${GITHUB_REPOSITORY}:latest"
elif [[ $VERSION == "master" ]]; then
elif [[ $VERSION == "main" ]]; then
TAGS="$TAGS,${GITHUB_REPOSITORY}:beta"
fi
GHCR_TAGS="${GHCR_IMAGE}:${VERSION}"
if [[ $GITHUB_REF == refs/tags/* ]]; then
GHCR_TAGS="$GHCR_TAGS,${GHCR_IMAGE}:latest"
elif [[ $VERSION == "master" ]]; then
elif [[ $VERSION == "main" ]]; then
GHCR_TAGS="$GHCR_TAGS,${GHCR_IMAGE}:beta"
fi
Expand Down Expand Up @@ -76,18 +76,19 @@ jobs:
docker compose version
docker compose --file docker-compose.test.yml up --exit-code-from sut --timeout 10 --build
# Step 8: Build and Push (if not a PR)
# Step 8: Build and Push to DockerHub
- name: Build and push
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
push: true
tags: ${{ steps.prepare.outputs.tags }}
platforms: ${{ steps.prepare.outputs.platforms }}

# Step 9: Push to GitHub Container Registry
- name: Push to GHCR
if: github.event_name != 'pull_request'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
uses: docker/build-push-action@v6
with:
context: .
Expand Down
58 changes: 29 additions & 29 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,35 @@ LABEL Maintainer="Ernesto Serrano <[email protected]>" \

# Install packages
RUN apk --no-cache add \
php83 \
php83-ctype \
php83-curl \
php83-dom \
php83-exif \
php83-fileinfo \
php83-fpm \
php83-gd \
php83-iconv \
php83-intl \
php83-json \
php83-mbstring \
php83-mysqli \
php83-opcache \
php83-openssl \
php83-pecl-apcu \
php83-pdo \
php83-pdo_mysql \
php83-pgsql \
php83-phar \
php83-session \
php83-simplexml \
php83-soap \
php83-sodium \
php83-tokenizer \
php83-xml \
php83-xmlreader \
php83-zip \
php83-zlib \
php84 \
php84-ctype \
php84-curl \
php84-dom \
php84-exif \
php84-fileinfo \
php84-fpm \
php84-gd \
php84-iconv \
php84-intl \
php84-json \
php84-mbstring \
php84-mysqli \
php84-opcache \
php84-openssl \
php84-pecl-apcu \
php84-pdo \
php84-pdo_mysql \
php84-pgsql \
php84-phar \
php84-session \
php84-simplexml \
php84-soap \
php84-sodium \
php84-tokenizer \
php84-xml \
php84-xmlreader \
php84-zip \
php84-zlib \
nginx \
runit \
curl \
Expand Down
16 changes: 6 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
# Docker PHP-FPM 8.3 & Nginx 1.26 on Alpine Linux 3.20
# Docker PHP-FPM 8.4 & Nginx 1.26 on Alpine Linux 3.21

[![Docker Pulls](https://img.shields.io/docker/pulls/erseco/alpine-php-webserver.svg)](https://hub.docker.com/r/erseco/alpine-php-webserver/)
![Docker Image Size](https://img.shields.io/docker/image-size/erseco/alpine-php-webserver)
![alpine 3.20](https://img.shields.io/badge/alpine-3.20-brightgreen.svg)
![nginx 1.26.0](https://img.shields.io/badge/nginx-1.26-brightgreen.svg)
![php 8.3](https://img.shields.io/badge/php-8.3-brightgreen.svg)
![alpine 3.21](https://img.shields.io/badge/alpine-3.21-brightgreen.svg)
![nginx 1.26.2-r3](https://img.shields.io/badge/nginx-1.26.2-r3-brightgreen.svg)
![php 8.4](https://img.shields.io/badge/php-8.4-brightgreen.svg)
![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)

Example PHP-FPM 8.3 & Nginx 1.26 setup for Docker, build on [Alpine Linux](https://www.alpinelinux.org/).
Example PHP-FPM 8.4 & Nginx 1.26 setup for Docker, build on [Alpine Linux](https://www.alpinelinux.org/).
The image is only +/- 25MB large.

Repository: https://github.com/erseco/alpine-php-webserver

* Built on the lightweight and secure Alpine Linux distribution
* Very small Docker image size (+/-25MB)
* Uses PHP 8.3 for better performance, lower cpu usage & memory footprint
* Uses PHP 8.4 for better performance, lower cpu usage & memory footprint
* Multi-arch support: 386, amd64, arm/v6, arm/v7, arm64, ppc64le, s390x
* Optimized for 100 concurrent users
* Optimized to only use resources when there's traffic (by using PHP-FPM's ondemand PM)
* Use of runit instead of supervisord to reduce memory footprint
* The servers Nginx, PHP-FPM run under a non-privileged user (nobody) to make it more secure
* The logs of all the services are redirected to the output of the Docker container (visible with `docker logs -f <container name>`)
* Follows the KISS principle (Keep It Simple, Stupid) to make it easy to understand and adjust the image to your needs
* Also availabe in Apache flavour: `erseco/alpine-php-webserver:apache`


## Usage

Expand All @@ -46,8 +44,6 @@ Easily serve your local PHP files using Docker Compose. This setup mounts your `
Here's a simple `docker-compose.yml` example to get you started:

```yaml
version: '3.8'

services:
webserver:
image: erseco/alpine-php-webserver
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.test.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
version: '3.5'
---
services:
app:
build: .
sut:
image: alpine:3.21
image: alpine:latest
depends_on:
- app
command: /tmp/run_tests.sh
Expand Down
8 changes: 4 additions & 4 deletions rootfs/bin/docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ mv "$tmpfile" /etc/nginx/nginx.conf

# Replace ENV vars in php configuration files
tmpfile=$(mktemp)
cat /etc/php83/conf.d/custom.ini | envsubst "$(env | cut -d= -f1 | sed -e 's/^/$/')" | tee "$tmpfile" > /dev/null
mv "$tmpfile" /etc/php83/conf.d/custom.ini
cat /etc/php84/conf.d/custom.ini | envsubst "$(env | cut -d= -f1 | sed -e 's/^/$/')" | tee "$tmpfile" > /dev/null
mv "$tmpfile" /etc/php84/conf.d/custom.ini

tmpfile=$(mktemp)
cat /etc/php83/php-fpm.d/www.conf | envsubst "$(env | cut -d= -f1 | sed -e 's/^/$/')" | tee "$tmpfile" > /dev/null
mv "$tmpfile" /etc/php83/php-fpm.d/www.conf
cat /etc/php84/php-fpm.d/www.conf | envsubst "$(env | cut -d= -f1 | sed -e 's/^/$/')" | tee "$tmpfile" > /dev/null
mv "$tmpfile" /etc/php84/php-fpm.d/www.conf

echo "Starting startup scripts in /docker-entrypoint-init.d ..."
for script in $(find /docker-entrypoint-init.d/ -executable -type f | sort); do
Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion rootfs/etc/service/php/run
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

# pipe stderr to stdout and run php-fpm
exec 2>&1
exec php-fpm83 -F
exec php-fpm84 -F
2 changes: 1 addition & 1 deletion run_tests.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/usr/bin/env sh
apk --no-cache add curl
curl --silent --fail http://app:8080 | grep 'PHP 8.3'
curl --silent --fail http://app:8080 | grep 'PHP 8.4'

0 comments on commit 59d3b75

Please sign in to comment.