Nginx Docker image for PHP development. SSL-ready, lightweight Alpine-based, multi-arch support.
10K+
This Docker image provides a streamlined Nginx setup optimized for local PHP development environments.
It's designed to seamlessly integrate with wayofdev/docker-php-devโ and other (WOD) images, creating an efficient local development ecosystem for web projects.
k8s-alpine variant for testing Kubernetes setups locallyPerfect for developing Laravel applications, Symfony projects, or any PHP-based web services in a local environment that closely mirrors production setups.
Provides foundation for creating, testing, and debugging your web applications locally.
If you like/use this package, please consider โญ๏ธ starring it. Thanks!
| Variant | Description |
|---|---|
| dev-alpine | For local development environments, uses 80 and 443 ports. |
| k8s-alpine | Optimized for k8s and local environments, uses 8880 and 8443 ports, rootless. |
docker pull wayofdev/nginx:k8s-alpine-latest
Replace k8s-alpine-latest with your desired type, and tag.
Here's an example docker-compose.yml for a typical setup:
services:
app:
image: wayofdev/php-dev:8.3-fpm-alpine-latest
container_name: ${COMPOSE_PROJECT_NAME}-app
restart: on-failure
networks:
- default
- shared
depends_on:
- database
links:
- database
volumes:
- ./.github/assets:/assets:rw,cached
- ./app:/app:rw,cached
- ./.env:/app/.env
- ~/.composer:/.composer
- ~/.ssh:/home/www-data/.ssh
environment:
FAKETIME: '+2h'
XDEBUG_MODE: '${XDEBUG_MODE:-off}'
PHIVE_HOME: /app/.phive
dns:
- 8.8.8.8
extra_hosts:
- 'host.docker.internal:host-gateway'
web:
image: wayofdev/nginx:k8s-alpine-latest
container_name: ${COMPOSE_PROJECT_NAME}-web
restart: on-failure
networks:
- default
- shared
depends_on:
- app
links:
- app
volumes:
- ./app:/app:rw,cached
- ./.env:/app/.env
labels:
- traefik.enable=true
- traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.rule=Host(`api.${COMPOSE_PROJECT_NAME}.docker`)
- traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.entrypoints=websecure
- traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.tls=true
- traefik.http.services.api-${COMPOSE_PROJECT_NAME}-secure.loadbalancer.server.port=8880
- traefik.docker.network=network.${SHARED_SERVICES_NAMESPACE}
app service using the wayofdev/php-dev image for PHP processing.web service using a custom Nginx imageโ for serving the application.For a comprehensive, real-world example of how to use this image in a Docker Compose setup, please refer to the wayofdev/laravel-starter-tplโ repository. This template provides a fully configured development environment for Laravel projects using the wayofdev/php-dev image.
The Nginx image is pre-configured for optimal performance with PHP applications, but you can customize it further to suit your specific needs.
The default configuration is generated using Ansible templates and includes:
While the configuration is primarily managed through Ansible templates, you can override specific settings:
Environment Variables: The image uses the following environment variables:
| Variable | Default Value | Description |
|---|---|---|
| PHP_UPSTREAM_CONTAINER | app | The name of the PHP-FPM container |
| PHP_UPSTREAM_PORT | 9000 | The port of the PHP-FPM container |
Set these in your docker-compose.yml file:
services:
web:
image: wayofdev/nginx:k8s-alpine-latest
environment:
- PHP_UPSTREAM_CONTAINER=my-php-app
- PHP_UPSTREAM_PORT=9001
Volume Mounts: For more extensive customizations, you can mount your own config files:
services:
web:
image: wayofdev/nginx:k8s-alpine-latest
volumes:
- ./custom-nginx.conf:/etc/nginx/nginx.conf
- ./custom-default.conf:/etc/nginx/conf.d/default.conf
The image includes self-signed SSL certificates. To use your own:
services:
web:
image: wayofdev/nginx:k8s-alpine-latest
volumes:
- ./certs/cert.pem:/etc/nginx/ssl/cert.pem
- ./certs/key.pem:/etc/nginx/ssl/key.pem
For more advanced configurations:
src directorymake generateThis project uses a set of tools for development and testing. The Makefile provides various commands to streamline the development process.
Clone the repository:
git clone [email protected]:wayofdev/docker-nginx.git && \
cd docker-nginx
Ansible is used to generate Dockerfiles and configurations. To generate distributable Dockerfiles from Jinja template source code:
make generate
Build the default image:
make build
This command builds the image specified by the IMAGE_TEMPLATE variable in the Makefile. By default, it's set to k8s-alpine.
Build a specific image:
make build IMAGE_TEMPLATE="k8s-alpine"
Replace 8.3-fpm-alpine with your desired PHP version, type, and OS.
Build all images:
make build IMAGE_TEMPLATE="k8s-alpine"
make build IMAGE_TEMPLATE="dev-alpine"
These commands will build all supported image variants.
This project uses a testing approach to ensure the quality and functionality of the Docker images. The primary testing tool is dgossโ , which allows for testing Docker containers.
You can run tests using the following commands:
Test the default image:
make test
This command tests the image specified by the IMAGE_TEMPLATE variable in the Makefile (default is k8s-alpine).
Test a specific image:
make test IMAGE_TEMPLATE="k8s-alpine"
Replace k8s-alpine with your desired image type, and OS.
Test all images:
make test IMAGE_TEMPLATE="k8s-alpine"
make test IMAGE_TEMPLATE="dev-alpine"
The test configurations are defined in goss.yaml files, which are generated for each image variant. These files specify the tests to be run, including:
When you run the make test command, the following steps occur:
goss.yaml file against the Docker container.This project has a security policyโ .
Thank you for considering contributing to the wayofdev community! We are open to all kinds of contributions. If you want to:
You are more than welcome. Before contributing, kindly check our contribution guidelinesโ .
Content type
Image
Digest
sha256:027322e77โฆ
Size
27.8 MB
Last updated
about 10 hours ago
docker pull wayofdev/nginx:k8s-alpine-latestPulls:
714
Jul 6 to Jul 12