Skip to content
Agencei

Expertise

Docker expertise: containerised, reproducible, deployment-ready applications

Docker packages an application and all its dependencies into an immutable image that runs the same way on a developer workstation, a server or a cluster. It is now the de facto standard for shipping web applications and APIs.

Agencei containerises the applications we build (Java, Node.js, Python, PHP, Next.js) and those of our clients: multi-stage Dockerfiles, local environments with Docker Compose, publishing to a registry and integration into CI/CD.

This expertise is for teams that want to put an end to "it works on my machine", make their deployments reliable or prepare a move to Kubernetes or a managed container service.

Use cases

Containerising an existing application

A Dockerfile suited to the language, configuration through environment variables, logs on standard output and graceful shutdown.

Reproducible development environments

Docker Compose with database, cache, queues and mocked third-party services, so every developer is up and running in minutes.

Image optimisation

Multi-stage builds, minimal base images (distroless, Alpine, slim), layer caching and non-privileged execution.

Continuous integration

Building, testing and vulnerability scanning of images in GitHub Actions or GitLab CI, then publishing to ECR, GHCR or a private registry.

Simple container hosting

Deployment on a single server with Docker Compose and a reverse proxy (Traefik, Caddy, Nginx) when Kubernetes would be overkill.

Project types

  • Dockerising a Java, Node.js or PHP application
  • Local Docker Compose environment
  • CI/CD image build pipeline
  • Image optimisation and hardening
  • Server hosting with Docker Compose
  • Preparation for Kubernetes or ECS

Integration with the rest of the stack

  • Docker + Kubernetes or ECS

    The produced images are deployed on a Kubernetes cluster (EKS) or on ECS Fargate, with health probes and resource limits.

  • Docker + CI/CD

    Every commit produces a tagged, tested and scanned image, ready to be deployed to staging and then production.

  • Docker + Spring Boot, Node.js, Python

    Dockerfiles tailored to each ecosystem: layered jars or Jib for Java, multi-stage builds with pnpm for Node.js, uv for Python.

  • Docker + WordPress or PrestaShop

    Controlled PHP-FPM and Nginx images, volumes for media, a separate MySQL database and per-environment configuration.

Examples of problems solved

Multi-gigabyte image that is slow to deploy

Moving to multi-stage builds, a minimal base image, removal of build tools and caches, optimised layer ordering.

Container killed for lack of memory (OOMKilled)

Aligning container limits with the JVM or Node.js settings, fixing leaks and realistic sizing.

Vulnerabilities detected in images

Updating base images, Trivy or Grype scanning in CI, scheduled rebuilds and running as a non-root user.

Compose drifting from production

Aligning versions, variables and mount points, and using the same images locally and in deployment.

Secrets baked into the image

Removing secrets from the Dockerfile and its history, switching to build secrets and variables injected at startup.

Frequently asked questions

Is Docker useful without Kubernetes?

Yes. Many applications run very well with Docker Compose on one or two servers behind a reverse proxy. Kubernetes only makes sense when the number of services or the scaling needs justify it.

Does Docker slow down the application?

No, only negligibly on Linux. Containers share the host kernel. On macOS and Windows, an intermediate virtual machine can slow down mounted volumes during development.

How do you manage secrets with Docker?

Never in the image or the repository. Secrets are injected at startup through environment variables, mounted files or a secrets manager (Secrets Manager, Vault).

Can you containerise a legacy application?

Usually, yes. We identify system dependencies, hard-coded file paths and local state, then adapt the configuration so it is supplied from the outside.

What is the difference between Docker and Podman?

Podman is a compatible alternative using the same images and syntax, without a central daemon and often without privileges. The choice depends on your environment and security policies.

Tell us about your project

Describe your need in a few lines: we come back to you with a first analysis and the next steps.