docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本
docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本
一、什么是memcached
Memcached 是一个通用的分布式内存缓存系统。 它通常用于通过在 RAM 中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取外部数据源(例如数据库或 API)的次数。
Memcached 的 API 提供了一个分布在多台机器上的非常大的哈希表。 当表已满时,后续插入会导致以最近最少使用的顺序清除旧数据。 使用 Memcached 的应用程序通常会将请求和添加分层到 RAM 中,然后再回到较慢的后备存储(例如数据库)上。
二、为什么要使用memcached
在单个服务器的架构内,使用memcached这类缓存的作用是为了减轻数据库的压力,对于更新不频繁的数据,没必要每次都去请求数据库。
同样的,之前我写过的文件缓存也是作用。但是,本地的文件缓存有个缺点,就是不能跨项目使用,我在自己框架内部使用的缓存,我只能自己读写。
那如果我的项目是多个服务器的,或者多端的,api项目和web项目都不是用一个语言实现,那再使用文件
三、部署安装
我们这里使用的是官方的源 Memcached - Official Image | Docker Hub

1. 版本选择
注意的是,如果你用latest,就是默认的最新版本,目前最新版本是1.6。
但是,从实际项目来看,大部分公司的生产环境并不会使用最新的版本,所以必须根据实际情况选择自己适用的版本。
我这里选择的版本是1.4.32。
再次强调,任何环境下的版本号都是非常重要的,不能默认使用最新版本!!!
2. 命令行直接安装
docker run -p 11211:11211 --name memcache memcached:1.4.32
如果不指定冒号后面的版本默认就是最新版本。
连接测试
(base) xxxx@xxxx ~ % telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
3. docker-compose 安装
命令行安装有一些缺点,比如
- 团队成员不好复制
- 环境配置不好保管
- 成套环境不好维护
而这些缺点,docker-compose都可以解决。
docker-compose通过维护一个docker-compose.yml的文件,他能把所有的项目环境都整合到一起,做到所有项目成员的环境配置一模一样。
memcached:image: memcached:1.4.32ports:- 11211:11211
目前我用的docker-compose的本地环境包含了
- memcached
- elasticsearch
- kibana
- php
- nginx
本地配置如下,亲测可用。
version: "3"
services:memcached:image: memcached:1.4.32ports:- 11211:11211elastic:image: elasticsearch:6.7.0
# image: elasticsearch:7.9.3ports:- "9200:9200"environment:- bootstrap.system_call_filter=false
# - node.name=node-1
# - cluster.initial_master_nodes=node-1volumes:
# - /opt/docker/elasticsearch/data:/usr/share/elasticsearch/data- ../elasticsearch-local/data:/usr/share/elasticsearch/datanetworks:web:ipv4_address: 172.25.0.3kibana:image: kibana:6.7.0
# image: kibana:7.9.3environment:- I18N_LOCALE=zh-CN- ELASTICSEARCH_HOSTS=http://172.25.0.3:9200- ELASTICSEARCH_URL=http://172.25.0.3:9200ports:- "5601:5601"networks:- webphp:image: crunchgeek/php-fpm:7.0volumes:- ./yii_env.php:/var/www/yii_env.php- ./php.ini:/usr/local/etc/php/php.ini- ./:/var/www/htmlnetworks:- webweb:image: nginxports:- "8001-8009:8001-8009"volumes:- ./yii_env.php:/var/www/yii_env.php- ./:/var/www/html- ./default:/etc/nginx/conf.d/default.conf- ./localcerts:/etc/nginx/certsnetworks:- webnetworks:web:ipam:driver: defaultconfig:- subnet: "172.25.0.0/16"
四、总结
- 推荐本地环境使用docker,部署轻松没负担。
- 线上环境不推荐使用docker,存在不可忽视的性能损耗。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
