← All work
Infrastructure · 2020–21

Containerized Self-Hosted Photo-Management Deployment

A stock-image / visual-content marketplace

Overview

A containerized deployment wrapper around Lychee, the open-source self-hosted photo-management application, packaged for the visual-content marketplace. It bundles the Lychee app (via a git submodule) with Docker, Nginx, and configurable database backends for turnkey hosting.

Why It Exists

Rather than rebuild a photo-management gallery from scratch, the team integrated and operationalized the open-source Lychee project, wrapping it in a reproducible, deployable container with sensible defaults and multiple database options to fit the marketplace’s hosting needs.

What We Built

A deployment repo whose core is a lychee-dev git submodule (the Lychee app) plus the operational glue: a Dockerfile, docker-compose.yml, an Nginx default.conf, an entrypoint.sh, and build.sh/deploy.sh/inject.sh scripts. Environment presets for each backend ship as env.mysql, env.postgres, env.sqlite, env.sqlite2, and env.default. A vendored composer.phar handles PHP dependency install, and a .travis.yml provides CI. Images are pushed to a Scaleway container registry.

Technologies & Approach

Docker and Docker Compose for reproducible, isolated deployment; Nginx as the front; pluggable database configs (MySQL/PostgreSQL/SQLite) so the same image runs across environments. Using Lychee as a git submodule kept the upstream OSS project cleanly separable from the deployment tooling.

Outcome / Impact

Provided a ready-to-run, self-hosted photo-management component for the platform, demonstrating the ability to evaluate, integrate, and operationalize third-party open-source software rather than reinventing it.

Capabilities Demonstrated

  • Containerizing and deploying an open-source app (Lychee) for production use
  • Multi-database packaging via environment presets (MySQL/Postgres/SQLite)
  • Docker Compose + Nginx orchestration with CI and a private container registry
  • Clean integration of upstream OSS through git submodules
More work See all →