用OSS数据卷实现wordpress附件共享

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 用OSS数据卷实现wordpress附件共享,不需要安装插件,不需要修改代码

docker容器的兴起,让wordpress的部署变得极为容易,“一分钟部署wordpress”的教程也随处可见。以阿里云容器服务为例,利用一下编排模板,可以一键部署wordpress(详细教程见这里)。

web:
  image: registry.aliyuncs.com/acs-sample/wordpress:4.3
  ports:
    - '80'
  environment:
    WORDPRESS_AUTH_KEY: changeme
    WORDPRESS_SECURE_AUTH_KEY: changeme
    WORDPRESS_LOGGED_IN_KEY: changeme
    WORDPRESS_NONCE_KEY: changeme
    WORDPRESS_AUTH_SALT: changeme
    WORDPRESS_SECURE_AUTH_SALT: changeme
    WORDPRESS_LOGGED_IN_SALT: changeme
    WORDPRESS_NONCE_SALT: changeme
    WORDPRESS_NONCE_AA: changeme
  restart: always
  links:
    - 'db:mysql'
  labels:
    aliyun.logs: /var/log
    aliyun.probe.url: http://container/license.txt
    aliyun.probe.initial_delay_seconds: '10'
    aliyun.routing.port_80: http://wordpress
    aliyun.scale: '3'
db:
  image: registry.aliyuncs.com/acs-sample/mysql:5.7
  environment:
    MYSQL_ROOT_PASSWORD: password
  restart: always
  labels:
    aliyun.logs: /var/log/mysql

在这个编排模板中,会部署一个mysql容器,三个wordpress容器(aliyun.scale: '3'是阿里云容器服务的扩展标签,指定容器数量),wordpress容器通过link访问mysql。更爽的是,阿里云容器服务自带负载均衡功能,通过“aliyun.routing.port_80: http://wordpress”这个标签,实现三个wordpress容器的负载均衡(详细说明点这里)。

乍一看很完美,部署简单,功能齐全。但其实这里有个致命的缺陷。wordpress上传的附件是保存在本地磁盘上的,不同容器之间不能共享。当请求被分配到其他容器时,附件就打不开了。

解决办法有很多,比如添加OSS插件,把附件传到oss上。这里介绍一个更简单的办法——利用阿里云容器服务的OSS数据卷(oss volume),无需改动任何代码。

数据卷(volume)简介

Docker的特性,决定了容器本身是非持久化的,容器被删除后其中的数据也一并被删除了。Docker提供数据卷(Volume),通过挂载宿主机上的目录来实现持久存储。

但宿主机上的数据卷有很大的局限性

  • 容器在机器间迁移时,数据无法迁移
  • 不同机器之间不能共享数据卷

为了解决这些问题,阿里云容器服务提供第三方数据卷,将各种云存储(比如oss)包装成数据卷,可以直接挂载在容器上,不同容器间可以共享,并在容器重启、迁移时自动重新挂载。OSS数据卷的说明见这里

创建oss数据卷

oss数据卷基于ossfs,ossfs是阿里云官方提供的基于FUSE的文件系统,项目主页见https://github.com/aliyun/ossfs

打开数据卷管理界面,点击右上角”创建“,创建界面如下:
_OSS_

  • 数据卷名:数据卷的id,在集群内唯一。
  • AccessKeyId、AccessKeySecret:访问OSS所需的AK,可以从oss控制台获取。
  • 访问域名:如果bucket跟ECS在同一个区(Region),选内网域名;否则选外网域名
  • 文件缓存:如果需要在不同机器间同步同一个文件的修改(比如在A机器中修改文件,在B机器中读取修改后的内容),请关闭文件缓存。但请注意,关闭文件缓存将导致ls文件夹变得很缓慢,尤其是同一个文件夹下文件比较多时。没有上述需求时,请打开文件缓存,提高ls的速度。

使用oss数据卷

wordpress的附件,默认存放在/var/www/html/wp-content/uploads中,我们只需将oss数据卷映射到该目录,不同wordpress容器之间就共享同一个oss bucket了。新的编排模板如下,假设oss数据卷的名字是wp_upload

web:
  image: registry.aliyuncs.com/acs-sample/wordpress:4.3
  ports:
    - '80'
  volumes:
    - 'wp_upload:/var/www/html/wp-content/uploads'
  environment:
    WORDPRESS_AUTH_KEY: changeme
    WORDPRESS_SECURE_AUTH_KEY: changeme
    WORDPRESS_LOGGED_IN_KEY: changeme
    WORDPRESS_NONCE_KEY: changeme
    WORDPRESS_AUTH_SALT: changeme
    WORDPRESS_SECURE_AUTH_SALT: changeme
    WORDPRESS_LOGGED_IN_SALT: changeme
    WORDPRESS_NONCE_SALT: changeme
    WORDPRESS_NONCE_AA: changeme
  restart: always
  links:
    - 'db:mysql'
  labels:
    aliyun.logs: /var/log
    aliyun.probe.url: http://container/license.txt
    aliyun.probe.initial_delay_seconds: '10'
    aliyun.routing.port_80: http://wordpress
    aliyun.scale: '3'
db:
  image: registry.aliyuncs.com/acs-sample/mysql:5.7
  environment:
    MYSQL_ROOT_PASSWORD: password
  restart: always
  labels:
    aliyun.logs: /var/log/mysql

唯一的变化是添加了

volumes:
    - 'wp_upload:/var/www/html/wp-content/uploads'

重新部署,然后打开wordpress,上传附件,oss bucket里就能看到上传的附件了。是不是很简单?快来试试吧!

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
29天前
|
存储 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB冷存数据到OSS之后恢复失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
4月前
|
存储 SQL 分布式计算
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
48 1
|
25天前
|
存储 API 开发工具
oss数据解密与下载
阿里云OSS提供服务器端加密(SSE-OSS/SSE-KMS)功能,保证静态数据安全。下载加密对象时,OSS自动解密并返回原始内容。确保下载请求者有相应权限,尤其是使用SSE-KMS时。可通过SDK、图形化工具或编程框架集成下载,发起请求时,OSS自动处理解密,客户端接收解密后的数据。权限、下载方式选择及请求发起是关键步骤。
9 1
|
3月前
|
SQL 存储 分布式计算
Hologres实时湖仓能力增强,挑战5分钟加速分析OSS数据
5分钟快速使用Hologres实时湖仓能力,无需移动数据,直接加速读取存储于数据湖OSS上的Hudi、Delta、Paimon等格式类型的数据
|
3月前
|
存储 对象存储 SQL
【获奖名单公示】Hologres实时湖仓分析挑战赛
5分钟快速使用Hologres实时湖仓能力,无需移动数据,直接加速读取存储于数据湖OSS上的Hudi、Delta、Paimon等格式类型的数据
【获奖名单公示】Hologres实时湖仓分析挑战赛
|
4月前
|
存储 监控 开发工具
oss储存数据
oss储存数据
90 1
|
4月前
|
存储 对象存储
OSS冷热数据分离
OSS冷热数据分离
|
4月前
|
存储 缓存
共享主机和 WordPress 主机之间的区别
共享主机和 WordPress 主机之间的区别
45 1
共享主机和 WordPress 主机之间的区别
|
5月前
|
存储 SQL 分布式计算
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
57 2
|
5月前
|
域名解析 对象存储 数据安全/隐私保护
如何 Wordpress 使用 OSS 上传图片、文件
如何使用 OSS 上传 Wordpress 的图片文件
1242 2