alpine-caddy
alpine-caddy copied to clipboard
Caddy running on Alpine Linux [Docker]
Caddy container image running on Alpine Linux
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.19.1 (Released 2023-01-26)
Caddy Version 2.7.6
Table of Contents
- What is Alpine Linux?
- Features
- Architectures
- Tags
- Layers & Sizes
- How to use this image
- Image contents & Vulnerability analysis
- Source Repositories
- Container Registries
- Links
- Donation
🏔️ 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)
📝 PLEASE CHECK TAGS BELOW FOR SUPPORTED ARCHITECTURES, THE ABOVE IS A LIST OF EXPLANATION
🏷️ 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
🚀 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 NAME | PACKAGE VERSION | VULNERABILITIES |
---|