基于 docker compose 部署 Joomla 新站的流程

文章目录

    新增 docker 容器挂载目录

    在开发机上编辑 docker-compose.yml 配置文件,新增需要挂载的目录。然后提交保存。

    将配置文件更新到服务器上。重启 docker fpm 容器,使挂载目录生效。

    docker compose stop phpfpm82
    docker compose up -d phpfpm82
    

    确认目录已存在

    docker 比较贴心的一点是,设置的挂载目录,如果不存在,会自动创建这些目录。而不需要手动去逐一创建。如果不放心,可以手动验证一下:

    docker compose exec phpfpm82 /bin/bash
    ls xxx
    

    修改目录权限

    因为 Ubuntu 下,nginx 默认是以 www-data 用户运行的,所以需要将挂载的目录 chown:

    chown www-data:www-data -R xxx/
    

    新建数据库及对应账号

    > docker compose exec mysql /bin/bash
    > mysql -uroot -p
    
    CREATE DATABASE xxx CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
    create user xxx@'%' identified by 'password';
    grant all privileges on xxx.* to xxx@'%' with grant option;
    

    这里一定要注意,新建的数据库账号一定是允许远程登录的,因为之前的习惯都是新建 localhost 本地登录的 mysql 账号,所以很容易习惯性得还是新建 localhost。但是 docker mysql 容器是需要被其他容器,例如 php 容器访问的,那么就需要允许远程访问。

    最后,使用新创建的新账号,登录测试一下。

    新建 Nginx 配置文件

    复制之前的配置文件,将域名和目录替换掉。

    申请 Nginx HTTPS 证书

    在设置了域名 DNS 解析之后,就可以申请 HTTPS 证书了。

    certbot --nginx -d www.xxx.com
    

    修改 joomla 配置

    # grep redis configuration.php
    
    public $cache_handler = 'redis';
    public $redis_persist = true;                                              
    public $redis_server_auth = '';
    public $redis_server_db = 0;  // 如果一个主机上多个 joomla 网站,注意区分开 redis 数据库下标,例如 0,1,2,3...
    public $redis_server_host = 'redis';
    public $redis_server_port = 6379;
    public $session_handler = 'redis';   // 容易漏掉
    public $session_memcache_server_host = 'redis';
    public $session_memcached_server_host = 'redis';
    public $session_redis_persist = 1;
    public $session_redis_server_auth = '';
    public $session_redis_server_db = 0;
    public $session_redis_server_host = 'redis';
    public $session_redis_server_port = 6379;
    

    挂载 Linode Object Storage

    参考:

    s3fs-fuse 将 Linode Object Storage 挂载到 Ubuntu Server 本地文件系统

    参考

    • https://docs.docker.com/storage/volumes/
    • https://docs.docker.com/compose/compose-file/07-volumes/

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式