Effortless Local Development: Mastering Traefik, mkcert, and Nginx for PHP Applications
Selim Reza
Software Engineer | Backend & DevOps Specialist | Java, Python, PHP, Terraform, AWS
Introduction
Creating a local development environment that closely resembles production settings is crucial for developers. This article explores the integration of Traefik, a modern reverse proxy, with mkcert for SSL certificate management and Nginx for running PHP applications.
Demystifying Traefik Proxy
Traefik Proxy acts as a traffic controller for your applications. Imagine it as a highly efficient traffic cop who knows exactly where each internet request should go in your network of services. With its dynamic setup, it adapts as you add or change services, making it perfect for modern, ever-evolving applications. Traefik stands out for its ease of use and ability to handle large-scale deployments.
Advantages of Traefik in Development
Traefik simplifies life for developers by automatically setting up HTTPS connections and supporting Let’s Encrypt, a popular way to get free SSL certificates. It’s not just about security; Traefik also provides smart routing, balancing user requests across different servers to optimize performance.
Introducing mkcert for Local SSL Certificates
Secure connections (HTTPS) are a must-have, even in local development. This is where mkcert comes in. It creates trusted certificates for your local development environment, ensuring your browser doesn’t complain about unsecured connections. It’s like giving a verified identity to your local projects, making them trustworthy.
Why SSL in Local Development Matters Without SSL, your local development might not accurately simulate the secure environment of a real production setup. SSL implementation can be tricky, but mkcert makes it as easy as a few commands.
Combining Traefik and SSL for a Production-like Environment
Using Traefik with SSL certificates created by mkcert in your local setup means you’re working in an environment that closely matches production. This setup reduces the chances of unexpected issues when you go live.
Solving Development Hurdles with Traefik and mkcert
These tools have streamlined the development process, allowing developers to focus more on coding and less on setup hassles. They provide a stable, secure environment that mimics production, making the transition from development to live smoother.
领英推荐
Step-by-Step Guide with GitHub Repository
To get started, you can refer to the GitHub repository linked at the end of this article. It contains detailed instructions and code snippets for setting up Traefik with mkcert, Nginx, and a PHP application.
We have php container:
Now We need nginx to run PHP:
Here we are using the network as traefik. Also, labels are traefik nginx rules and secure connection with domains.
labels:
- traefik.http.routers.nginx.rule=Host(`selim-reza.test`, `www.selim-reza.test`)
- traefik.http.routers.nginx.entrypoints=web
- traefik.http.routers.nginx-secure.rule=Host(`selim-reza.test`, `www.selim-reza.test`)
- traefik.http.routers.nginx-secure.entrypoints=websecure
- traefik.http.routers.nginx-secure.tls=true
Traefik container
Here we define routers with security protocol. Labels are given below:
labels:
- traefik.http.routers.traefik.service=api@internal
- traefik.http.routers.traefik.entrypoints=web # Make sure this matches the defined entrypoint
- traefik.http.routers.traefik-secure.service=api@internal
- traefik.http.routers.traefik-secure.entrypoints=websecure
- traefik.http.routers.traefik-secure.tls=true
Source codes / Git Repo: https://github.com/selimppc/traefik-mkcert-nginx-php-docker-compose
Conclusion and Further Resources
Traefik and mkcert are powerful tools that make local development secure and efficient, closely mirroring production environments. For more detailed information, check out the official Traefik documentation and the GitHub repository linked below.