用 caddy最大的好处就是不用考虑 https 证书的问题, caddy 自动会帮我搞定, 省心
第一步 先安装 Docker 和 Docker-compose
curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin
第二步 定个地方创建文件夹 wwwroot目录,把相关内容都放这个目录下
cd /home
mkdir -p wwwroot wwwroot/site
cd wwwroot
touch docker-compose.yml Caddyfile
第三步 修改 docker-compose.yml 文件, 内容如下
services:
caddy:
image: caddy:latest
container_name: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./site:/srv
depends_on:
- php
php:
image: php:8.0-fpm
container_name: php
volumes:
- ./site:/srv
depends_on:
- db
db:
image: mariadb:latest
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: root用户密码(生产环境为安全考虑不要这样用)
MYSQL_DATABASE: 数据库名称
MYSQL_USER: 新建用户名
MYSQL_PASSWORD: 密码
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
第四步 修改caddy 的配置文件 Caddyfile, 内容如下
www.example.com {
root * /srv
encode gzip
php_fastcgi php:9000
file_server
}
第五步 把网站文件上传到/home/wwwroot/site 目录下, 检查文件结构
/home目录
|---wwwroot目录
|---Caddyfile文件
|---docker-compose.yml文件
|---site目录
|---index.php
|---网站其它文件和目录
检查无误后启动docker
cd /home/wwwroot
docker-compose up -d
1 如果有权限问题用 chmod 解决
2 如果访问报"ERR_SSL_PROTOCOL_ERROR"错, 就换个域名, 可能是调试的时候当前域名申请了太多次证书被短期内限制申请新证书了
3 很多网站要用的 php 扩展比如 gd,mysqli 可以用下面的命令安装
docker exec -it php容器名称 bash
apt update && apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
docker-php-source extract
cd /usr/src/php/ext/gd
docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2
docker-php-ext-install gd mysqli
#安装完成后查看是否成功,有输出内容代表成功
php -m | grep gd
php -m | grep mysql