Mastering Multi-Process Containers: Running PHP Applications with s6-overlay

󰃭 2025-03-26 | #ci #devops #docker #s6-overlay

The Dockerized Development Setup

Containerization has completely changed how we build and deploy PHP applications. With Docker, you can make sure that your production environment behaves just like your local setup, which means fewer surprises when you go live.

In this post, we’re diving into running Symfony in a container that runs multiple processes using s6-overlay. We’ll explain why having more than one process in a container can be important, how this idea is different from Docker’s usual “one process per container” rule, and how s6-overlay makes it easier to run everything together.

Continue reading 


Manage s6-overlay setup with s6-cli

󰃭 2024-12-06 | #ci #devops #docker #s6-overlay

I developed a small cli in golang to ease creating, validating and documenting services that s6 supervises.

Usage

You do not need to install anything, just execute the binary via docker

docker run -it --rm hakindazz/s6-cli help
COMMANDS:
   create, c   create a service
   remove, rm  remove a service
   lint, l     lint directories and files
   mermaid, m  document s6 service dependencies in mermaid syntax
   help, h     Shows a list of commands or help for one command

Create a service with s6-cli

docker run -it --rm -v ./:/etc/s6-overlay hakindazz/s6-cli create oneshot init-dependencies

Here is the file / directory structure it creates:

Continue reading 


Build your own s6-overlay base image

󰃭 2024-08-19 | #devops #docker #s6-overlay

S6-overlay is a container-focused process manager that offers end-to-end management of the container’s lifecycle, from initialization to graceful shutdown.

To make use of s6-overlay we need to add the binaries to our container by adding, extracting and then moving them to the directory where they are expected.

ADD https://github.com/just-containers/s6-overlay/releases/download/3.2.0.0/s6-overlay-noarch.tar.xz /tmp  
ADD https://github.com/just-containers/s6-overlay/releases/download/3.2.0.0/s6-overlay-x86_64.tar.xz /tmp

Update dependencies

When adding the s6-overlay sources to in a Dockerfile we want to make sure that we get notified when a new version is available, so we can always be up-to-date with all our libraries. This can be achieved by adding a section to our Renovate or Dependabot config, a rule to match

Continue reading 


Environment variables in a dockerized Symfony

󰃭 2023-01-02 | #cd #ci #docker #docker-compose #dotenv #env_file #symfony

I have developed a Symfony Web-Application, and it runs locally in a dockerized environment with docker-compose. This app is going to be deployed to production as a docker container. In production the handling of environment variables and how they are passed to the container during development is different.

12 Factor App

A few points from the 12factor methodology:

  • III. Config: Store config in the environment since env vars are easy to change between deploys without changing any code
  • X. Dev/prod parity: Keep development, staging, and production as similar as possible

I was searching for options how to handle the differences how environment variables are passed and I found there are at least

Continue reading 


Build and push docker images to ghcr.io with GitHub Actions

󰃭 2022-12-28 | #cd #docker #github #github-actions #github-packages

When you host your project code on GitHub and want to release it as a docker image for deployment or just publish it, the way to go are GitHub actions. Actions are basically hooks that can start CI/DC workflows on repository events.

GitHub actions can be used to build and push images to GitHub’s Container Registry which are reachable under https://ghcr.io which is part of the package registry. The package registry is not only for docker images, it can also host quite a few other kinds of packages. In this case we’ll focus on docker images.

Continue reading 