Docker 运行带PHP的Caddy

Caddy是一个使用 Go语言写的 HTTP Server,上手非常简单,并且 Caddy支持 自动签订Let’s Encrypt SSL证书,只需要提供一个邮箱,剩下的他会自己申请、配置和续约 SSL证书!。这里用Docker来运行是因为可以直接运行集成PHP的docker分支,运行一些小的php应用非常方便。


docker run -d \
--name=caddy \
--restart=always \
-e ACME_AGREE=true \
-v /home/caddy/Caddyfile:/etc/Caddyfile \
-v /home/caddy/.caddy:/root/.caddy \
-v /home/caddy/www:/srv \
-p 80:80 -p 443:443 -p 2015:2015 \
abiosoft/caddy:php

Caddyfile 配置文件路径: /home/caddy/Caddyfile;

SSL证书存放路径:/home/caddy/.caddy;

网站程序存放路径/home/caddy/www,映射到Docker里的/srv,可以在此目录下建立子目录,Caddyfile文件里根据不同域名指定不同的子目录,建立多站点。

Caddyfile示例:


example.com {
gzip
root /srv
fastcgi / 127.0.0.1:9000 php # php variant only
on startup php-fpm7 # php variant only
}

4 Responses

  1. 1379834270 2019年4月5日 / 下午1:09

    你好,我尝试了你的教程,但是抛出异常。
    docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused “process_linux.go:424: container init caused \”rootfs_linux.go:58: mounting \\\”/home/caddy/Caddyfile\\\” to rootfs \\\”/var/lib/docker/overlay2/d860cf591aea7682a7660f3c0fe6b7aabdc322f6c286cdc0dfa0928b0c485254/merged\\\” at \\\”/var/lib/docker/overlay2/d860cf591aea7682a7660f3c0fe6b7aabdc322f6c286cdc0dfa0928b0c485254/merged/etc/Caddyfile\\\” caused \\\”not a directory\\\”\””: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

    • admin 2019年5月15日 / 下午9:27

      提示已经给出了。
      Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
      是不是把文件挂载到目录?

  2. One Fly 2019年6月5日 / 下午6:59

    为什么这个必须是 9000 端口啊?

    • admin 2019年6月5日 / 下午9:28

      这个是php-fpm服务的端口

发表评论

电子邮件地址不会被公开。 必填项已用*标注