docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本
Posted 小雨同学的服务器果然有问题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.32
ports:
- 11211:11211
目前我用的docker-compose的本地环境包含了
- memcached
- elasticsearch
- kibana
- php
- nginx
本地配置如下,亲测可用。
version: "3"
services:
memcached:
image: memcached:1.4.32
ports:
- 11211:11211
elastic:
image: elasticsearch:6.7.0
# image: elasticsearch:7.9.3
ports:
- "9200:9200"
environment:
- bootstrap.system_call_filter=false
# - node.name=node-1
# - cluster.initial_master_nodes=node-1
volumes:
# - /opt/docker/elasticsearch/data:/usr/share/elasticsearch/data
- ../elasticsearch-local/data:/usr/share/elasticsearch/data
networks:
web:
ipv4_address: 172.25.0.3
kibana:
image: kibana:6.7.0
# image: kibana:7.9.3
environment:
- I18N_LOCALE=zh-CN
- ELASTICSEARCH_HOSTS=http://172.25.0.3:9200
- ELASTICSEARCH_URL=http://172.25.0.3:9200
ports:
- "5601:5601"
networks:
- web
php:
image: crunchgeek/php-fpm:7.0
volumes:
- ./yii_env.php:/var/www/yii_env.php
- ./php.ini:/usr/local/etc/php/php.ini
- ./:/var/www/html
networks:
- web
web:
image: nginx
ports:
- "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/certs
networks:
- web
networks:
web:
ipam:
driver: default
config:
- subnet: "172.25.0.0/16"
四、总结
- 推荐本地环境使用docker,部署轻松没负担。
- 线上环境不推荐使用docker,存在不可忽视的性能损耗。
以上是关于docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本的主要内容,如果未能解决你的问题,请参考以下文章
Memcached实录PHP项目Yii2框架本地Docker-compose部署Memcached的坑/Yii2跨项目使用Memcached的key解决方案/亲测可用带源码建议收藏
Memcached实录PHP项目Yii2框架本地Docker-compose部署Memcached的坑/Yii2跨项目使用Memcached的key解决方案/亲测可用带源码建议收藏