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解决方案/亲测可用带源码建议收藏

Docker打包Springboot项目war包镜像并部署

Docker + node(koa) + nginx + mysql 线上环境部署

Docker打包Springboot项目war包镜像并部署

Docke连载:第三章:Docker的使用