- 创建目录(在root目录下)
目录结构为个人习惯,可以按照自己的习惯配置,$ mkdir -p caddy/{conf,logs,www} $ cd caddy
- 配置Caddyfile
$ vi conf/Caddyfile
以上是在配置公网域名后的配置,还没有配置域名?那直接用 IP 就行,如下www.?????.net { gzip root /opt/www timeouts 30s log /opt/logs/access.log proxy /other localhost:8080 proxy /more localhost:8081 localhost:8082 #负载均衡 }
192.168.1.2:80 192.168.1.2:443 { gzip root /opt/www tls self_signed #自动签名,很重要 timeouts 30s log /opt/logs/access.log proxy /other localhost:8080 }
相信很多人会和我一样,caddy是在 虚拟机 上部署,但是访问却在物理机上,如果按照网上的一些配置文档,随便编写一个域名,就会无法访问,不在同一个环境了,物理机上输入自定义的域名是不可能解析出ip访问到你的虚拟机的。
- 配置docker-compose.yml
$ vi docker-compose.yml
其中三个环境变量(environment)非常重要version: '3.3' services: # http/2 server caddy: image: abiosoft/caddy:latest container_name: caddy hostname: caddy domainname: caddy restart: always network_mode: "host" environment: - TZ=Asia/Shanghai - agree - email ?????@qq.com volumes: - "/root/caddy/conf/Caddyfile:/etc/Caddyfile" - "/root/caddy/.caddy:/root/.caddy" - "/root/caddy/logs:/opt/logs" - "/root/caddy/www:/opt/www" ports: - 80:80 - 443:443
1、配置上海时区
2、同意caddy自动配置ssl证书
3、caddy需要的反馈邮箱
注意,如果自定义了自己的目录结构,这里的数据卷 volumes 下的配置也要对应你自己的目录结构
- 启动
嗯?还没有安装 docker-compose ?$ docker-compose up -d $ docker logs -f caddy # 查看日志
# 安装docker-compose $ sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # 添加目录权限 $ sudo chmod +x /usr/local/bin/docker-compose # 验证docker-compose安装是否成功 $ docker-compose --version
- 测试
随便复制个文件到 www 目录下,我复制了个图片bg.jpg,
然后输入 https://192.168.1.2/bg.jpg
在火狐浏览器打开后是这样的(自己生成的证书不被信任),点击高级,继续访问便可
- 相关命令
$ docker-compose up # 前台启动容器,命令退出时,所有容器都将停止 $ docker-compose up -d # 在后台启动容器并使它们保持运行 $ docker logs -f [container_id] # 查看某一容器的启动的日志打印(日志从头打印) $ docker logs -f --tail [数量] [container_id] # 查看某一容器的启动的日志打印(查看最后n条日志打印)。 例:docker logs -f --tail 50 44b $ docker-compose stop # 停止compose服务 $ docker-compose restart # 重启compose服务 $ docker-compose kill # kill compose服务 $ docker-compose ps #查看compose服务状态 $ docker-compose rm #删除compose服务
CentOS 7 环境,亲测可用!!!