- Notifications
You must be signed in to change notification settings - Fork315
abiosoft/caddy-docker
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ADocker image forCaddy. This image includesgit,cors,realip,expires,cache andcloudflare plugins.
Plugins can be configured via theplugins
build arg.
Checkabiosoft/caddy:builder for generating cross-platform Caddy binaries.
This image is built fromsource code. As such, it is subject to the project'sApache 2.0 license, but it neither contains nor is subject tothe EULA for Caddy's official binary distributions.
Caddy may prompt to agree toLet's Encrypt Subscriber Agreement. This is configurable withACME_AGREE
environment variable. Set it to true to agree.ACME_AGREE=true
.
Starting fromv0.11.0
,Telemetry stats are submitted to Caddy by default. To use Caddy without telemetry, use the:no-stats
or:<version>-no-stats
tags. e.g.:0.11.0-no-stats
,:0.11.0-php-no-stats
.
$ docker run -d -p 2015:2015 abiosoft/caddy
Point your browser tohttp://127.0.0.1:2015
.
Be aware! If you don't bind mount the location certificates are saved to, you may hit Let's Encrypt ratelimits rending further certificate generation or renewal disallowed (for a fixed period)! See "Saving Certificates" below!
Save certificates on host machine to prevent regeneration every time container starts.Let's Encrypt hasrate limit.
$ docker run -d \ -v$(pwd)/Caddyfile:/etc/Caddyfile \ -v$HOME/.caddy:/root/.caddy \ -p 80:80 -p 443:443 \ abiosoft/caddy
Here,/root/.caddy
is the locationinside the container where caddy will save certificates.
Additionally, you can use anenvironment variable to define the exact location caddy should save generated certificates:
$ docker run -d \ -e"CADDYPATH=/etc/caddycerts" \ -v$HOME/.caddy:/etc/caddycerts \ -p 80:80 -p 443:443 \ abiosoft/caddy
Above, we utilize theCADDYPATH
environment variable to define a different location inside the container forcertificates to be stored. This is probably the safest option as it ensures any future docker image changes don't interfere with your ability to save certificates!
:[<version>-]php
variant of this image bundles PHP-FPM alongside essential php extensions andcomposer. e.g.:php
,:0.10.14-php
$ docker run -d -p 2015:2015 abiosoft/caddy:php
Point your browser tohttp://127.0.0.1:2015
and you will see a php info page.
Replace/path/to/php/src
with your php sources directory.
$ docker run -d -v /path/to/php/src:/srv -p 2015:2015 abiosoft/caddy:php
Point your browser tohttp://127.0.0.1:2015
.
YourCaddyfile
must include the lineon startup php-fpm7
. For Caddy to be PID 1 in the container, php-fpm7 could not be started.
Caddy can serve sites from git repository usinggit plugin.
Replacegithub.com/abiosoft/webtest
with your repository.
$printf"0.0.0.0\nroot src\ngit github.com/abiosoft/webtest"> Caddyfile
$ docker run -d -v$(pwd)/Caddyfile:/etc/Caddyfile -p 2015:2015 abiosoft/caddy
Point your browser tohttp://127.0.0.1:2015
.
You can build a docker image with custom plugins by specifyingplugins
build arg as shown in the example below.
docker build --build-arg \ plugins=git,linode \ github.com/abiosoft/caddy-docker.git
The image contains a default Caddyfile.
0.0.0.0browsefastcgi / 127.0.0.1:9000 php # php variant onlyon startup php-fpm7 # php variant only
The last 2 lines are only present in the php variant.
Caddyfile:/etc/Caddyfile
Sites root:/srv
Replace/path/to/Caddyfile
and/path/to/sites/root
accordingly.
$ docker run -d \ -v /path/to/sites/root:/srv \ -v path/to/Caddyfile:/etc/Caddyfile \ -p 2015:2015 \ abiosoft/caddy
Note that this does not work on local environments.
Use a valid domain and add email to your Caddyfile to avoid prompt at runtime.Replacemydomain.com
with your domain anduser@host.com
with your email.
mydomain.comtls user@host.com
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 \ -v$(pwd)/Caddyfile:/etc/Caddyfile \ -p 80:80 -p 443:443 \ abiosoft/caddy