0
点赞
收藏
分享

微信扫一扫

docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本

ixiaoyang8 2022-01-31 阅读 70


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

docker本地部署memcached附带docker-compose部署memcached/elasticsearch/kibana/php/nginx脚本_原力计划

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,存在不可忽视的性能损耗。


举报

相关推荐

0 条评论