API Platform was one of the first PHP frameworks to provide native support for Docker, Docker Compose, Kubernetes, and, more recently, Skaffold. The API Platform skeleton also served as the basis for Symfony Docker, the most popular solution for containerizing Symfony projects. These years of developing skeletons compatible with dev environments, continuous integration chains, and…
Category: DevOps
PHP and Symfony Apps As Standalone Binaries
Distributing PHP applications is quite complicated. For instance, to run a Symfony project in production, a web server, the PHP engine, and the appropriate PHP extensions need to be installed. Their versions and configurations must be compatible with the app. Because PHP is an interpreted language, the application source code must also be available. Composer…
The PHP Revolution Is Underway: FrankenPHP 1.0 Beta
I’m very proud to announce the immediate availability of FrankenPHP 1.0 beta. FrankenPHP is a brand-new application server for PHP, written in Go and built on top of Caddy, that dramatically simplifies the deployment of PHP apps, and brings new features to PHP such as: FrankenPHP is available as a Docker image (Debian, Alpine, PHP…
6x faster Docker builds for Symfony and API Platform projects
Available translations: French At Les-Tilleuls.coop, we’re constantly striving to reduce the environmental footprint and hosting costs of the projects we work on (eco-design, GreenOps, and FinOps strategies…). We generally focus on optimizing production code and infrastructure, but the CI/CD pipelines used to build and deploy applications can also consume a lot of physical and financial…
Securely Access Private Git Repositories and Composer Packages in Docker Builds
When working on enterprise projects, it’s common to have to download private dependencies that require authentication to be installed (usually, internal or paid packages). In modern setups, you’ll most likely use Docker to package your application (or service) and all its dependencies into a standalone image. Typically, building the Docker image is automated through a…
Preventing CORS Preflight Requests Using Content Negotiation
In modern web applications, it’s a common pattern to serve the web API and the frontend app from different subdomains: https://api.example.com: your web API, usually serving JSON documents https://example.com: your web application, usually built in JavaScript, generating HTML documents from the raw JSON data retrieved from the API This was the pattern implemented by API…
Symfony’s New Native Docker Support (Symfony World)
I’m very excited to announce that after 6 years of teamwork, Symfony and API Platform now include an industry-first set of tools designed to automatically create, manage and run the Docker containers needed for your applications. Read my article on the Symfony blog Watch my Symfony World talk Browse my slides deck:
CoopTilleulsOVHBundle: OVH SDK integration in Symfony
I’ve just released a new tiny open source bundle under the Les-Tilleuls.coop umbrella: CoopTilleulsOvhBundle. That bundle integrates the official PHP SDK provided by OVH and exposes it as a Symfony service. It also provides a convenient way to store API credentials in parameters.yml. The OVH API provides a lot of features including dynamic server management (elasticity)…
Continuous Integration for Symfony apps, the modern stack: quality checks, private Composer, headless browser testing…
Updated 2014/11/21 : Fixed a bug when deploying (thanks @meyer_baptiste). Added a command to update GitHub commit status (thanks @samuelroze). At Les-Tilleuls.coop, we built great e-commerce platforms and high-performance web applications with quality and agility in mind. Most of our applications share the same technical stack: the PHP language with the Symfony framework and Doctrine for back applications front applications developed with CoffeeScript or…
Sécuriser tant bien que mal une application Symfony installée dans un sous-répertoire
Souvent, pour des raisons de coups liées aux certificats SSL, il n’est pas possible d’installer une application Symfony dans son propre virtual host. L’application se retrouve alors dans un sous-répertoire du DocumentRoot, ouverte à tous vents et c’est une catastrophe en terme de sécurité ! Imaginons que notre DocumentRoot soit /home/web et que l’application Symfony…