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

更新日期: 2024-07-09 阅读次数: 948 字数: 545 分类: docker

新增 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 聊聊, 查看更多联系方式

tags: joomla