Sign inSign up

yobasystems/alpine-caddy

By yobasystems

•Updated 2 months ago

Caddy running on Alpine Linux [docker] [amd64/armhf/aarch64]

Image
Web servers
9

100K+

yobasystems/alpine-caddy repository overview

⁠Caddy container image running on Alpine Linux

Docker Automated build Docker Pulls Docker Stars

Alpine Version Caddy Version

This container image (yobasystems/alpine-caddy)⁠ is based on the minimal Alpine Linux⁠ using the Caddy⁠ HTTP/2 web server with HTTPS.

⁠Alpine Version 3.23.0 (Released 2025-12-03)
⁠Caddy Version 2.10.2

⁠Table of Contents

⁠🏔️ What is Alpine Linux?

Alpine Linux is a Linux distribution built around musl libc and BusyBox. The image is only 5 MB in size and has access to a package repository that is much more complete than other BusyBox based images. This makes Alpine Linux a great image base for utilities and even production applications. Read more about Alpine Linux here and you can see how their mantra fits in right at home with Container images.

⁠What is Caddy?

Caddy, sometimes clarified as the Caddy web server, is an open source, HTTP/2-enabled web server written in Go. It uses the Go standard library for its HTTP functionality. One of Caddy's most notable features is enabling HTTPS by default.

⁠✨ Features

  • Minimal size only, minimal layers
  • Memory usage is minimal on a simple install.
  • Auto git clone from repo with yobasystems/alpine-nginx:git tag

⁠🏗️ Architectures

  • :amd64, :x86_64 - 64 bit Intel/AMD (x86_64/amd64)
  • :arm64v8, :aarch64 - 64 bit ARM (ARMv8/aarch64)
  • :arm32v7, :armhf - 32 bit ARM (ARMv7/armhf)

⁠🏷️ Tags

  • :latest latest branch based (Automatic Architecture Selection)
  • :php latest branch with php
  • :amd64, :x86_64 amd64 based on latest tag but amd64 architecture
  • :php-amd64, :php-x86_64 amd64 based on latest tag but amd64 architecture and includes php
  • :aarch64, :arm64v8 Armv8 based on latest tag but arm64 architecture
  • :php-aarch64, :php-arm64v8 Armv8 based on latest tag but arm64 architecture and includes php
  • :armhf, :arm32v7 Armv7 based on latest tag but arm architecture
  • :php-armhf, :php-arm32v7 Armv7 based on latest tag but arm architecture and includes php

⁠📏 Layers & Sizes

Version Docker Image Size (tag)

Version Docker Image Size (tag)

Version Docker Image Size (tag)

⁠🚀 How to use this image

⁠Environment Variables:

⁠Main Caddy parameters:
  • URL: specify the url with http:// or https://

⁠Creating an instance

$ docker run -d --name examplecaddy -p 2015:2015 yobasystems/alpine-caddy

Point your browser to http://host-ip:2015.

⁠PHP

:[<version>-]php variant of this image bundles PHP-FPM. e.g. :php, :0.11.0-php

$ docker run -d --name examplecaddy -p 2015:2015 yobasystems/alpine-caddy:php

Point your browser to http://host-ip:2015 and you will see a php info page.

⁠Local php source

Replace /path/to/php/src with your php sources directory.

$ docker run -d --name examplecaddy -v /path/to/php/src:/srv -p 2015:2015 yobasystems/alpine-caddy:php

Point your browser to http://host-ip:2015.

⁠Note

Your Caddyfile must include the line startup php-fpm. For Caddy to be PID 1 in the container, php-fpm could not be started.

⁠Using git sources

Caddy can serve sites from git repository using git⁠ middleware.

⁠Create Caddyfile

Replace github.com/team/repo with your repository.

$ printf "0.0.0.0\ngit github.com/team/repo" > Caddyfile
⁠Run the image
$ docker run -d --name examplecaddy -v $(pwd)/Caddyfile:/etc/Caddyfile -p 2015:2015 yobasystems/alpine-caddy

Point your browser to http://host-ip:2015.

⁠Usage

⁠Default Caddyfile

The image contains a default Caddyfile.

0.0.0.0
browse
fastcgi / 127.0.0.1:9000 php # php variant only
startup php-fpm # php variant only

Note the last 2 lines are only present in the php variant.

⁠Paths in container

Caddyfile: /etc/Caddyfile

Sites root: /srv

⁠Using local Caddyfile and sites root

Replace /path/to/Caddyfile and /path/to/sites/root accordingly.

$ docker run -d --name examplecaddy -v /path/to/sites/root:/srv -v path/to/Caddyfile:/etc/Caddyfile -p 2015:2015 yobasystems/alpine-caddy
⁠Let's Encrypt Auto SSL

Note that this does not work on local environments, the domain also has to resolve to the server requesting the certificate.

Use a valid domain and add email to your Caddyfile to avoid prompt at runtime. Replace example.co.uk with your domain and [email protected] with your email.

example.co.uk
tls [email protected]
⁠Run the image

You can change the the ports if ports 80 and 443 are not available on host. e.g. 81:80, 444:443

$ docker run -d --name examplecaddy -v $(pwd)/Caddyfile:/etc/Caddyfile -p 80:80 -p 443:443 yobasystems/alpine-caddy

Optional but advised. Save certificates on host machine to prevent regeneration every time container starts. Let's Encrypts RATE LIMITS⁠ explain the number of times you can regenerate certificates.

$ docker run -d -v $(pwd)/Caddyfile:/etc/Caddyfile -v $HOME/.caddy:/root/.caddy -p 80:80 -p 443:443 yobasystems/alpine-caddy

⁠🔍 Image contents & Vulnerability analysis

PACKAGE NAMEPACKAGE VERSIONVULNERABILITIES

⁠📚 Source Repositories

⁠🐳 Container Registries

Tag summary

Content type

Image

Digest

sha256:aef0a801c…

Size

26.4 MB

Last updated

10 months ago

docker pull yobasystems/alpine-caddy