当前位置:   article > 正文

docker快速部署pg/redis/kafka/elasticsearch(es)/nginx等中间件_docker部署web项目 nginx postgresql 前端

docker部署web项目 nginx postgresql 前端

一、前言

在项目开发中我们经常要用到各种各样的中间件,比如postgresql(pg)数据库,Redis、elasticsearch(es)等等。使用docker来搭建这样一些服务非常的方便快捷,可以供我们开发使用。如果在自己的Windows电脑上开发,建议先创建一个Linux虚拟机,然后在上面部署这些服务,并设置docker开机启动,每次开发只需要启动下这个虚拟机,这些服务就可以使用了。
本例中我们使用docker一起搭建pg,Redis、es、consul、zookeeper、kafka、nginx等服务

二、镜像准备工作

我们提前把所需的服务镜像pull到服务器,这样部署的时候速度会更快

  1. consul image:
  2. docker pull docker.io/consul:1.5.0
  3. elasticsearch image :
  4. docker pull docker.io/elasticsearch:6.4.0
  5. postgresql image:
  6. docker pull docker.io/postgres:9.6-alpine
  7. redis image:
  8. docker pull docker.io/redis:5.0.4
  9. zookeeper image:
  10. docker pull zookeeper:3.4.10
  11. kafka image:
  12. docker pull docker.io/wurstmeister/kafka

三、容器部署

1. pg数据库的部署
直接使用docker run命令进行创建一个单独的数据库容器
PG的搭建

  1. docker run -d \
  2. -p 5432:5432 \
  3. -e POSTGRES_USER=postgres \
  4. -e POSTGRES_PASSWORD=admin \
  5. -v /home/admin/midware/pg:/var/lib/postgresql/data \
  6. --name pg \
  7. --restart always \
  8. docker.io/postgres:9.6-alpine

-p port 映射端口,可以通过宿主机的端口访问到容器内的服务

-d 是detach 保持程序后台运行的意思

-e environment 设置环境变量

-v volume 文件或者文件夹的挂载

2、redis容器的创建

  1. cd /home/admin/midware/redis/conf
  2. 创建redis.conf 内容如下:
  3. port 6379
  4. notify-keyspace-events "Ex"
  5. save 900 1
  6. save 300 10
  7. save 60 10000
  8. rdbcompression yes
  9. 创建redis容器:
  10. docker run -d -ti -p 6379:6379 -p 16379:16379 \
  11. -v /home/admin/midware/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:rw \
  12. -v /home/admin/midware/redis/data:/data:rw \
  13. --restart always --name redis \
  14. --sysctl net.core.somaxconn=1024 \
  15. docker.io/redis:5.0.4 /usr/local/etc/redis/redis.conf

3、consul 容器的搭建,使用单机版的,只有一个server

  1. docker run --name consul -d \
  2. -p 8500:8500 \
  3. -p 8300:8300 \
  4. -p 8301:8301 \
  5. -p 8302:8302 \
  6. -p 8600:8600 \
  7. --restart always \
  8. docker.io/consul:1.5.0 \
  9. agent -server -bootstrap-expect  1 \
  10. -ui -bind=0.0.0.0 \
  11. -client=0.0.0.0
  12. 注:consul容器自带监控面板,输入 http://192.168.40.128:8500/ui/dc1/services 如果出现如下页面证明容器启动成功

4、创建zookeeper和kafka 容器

  1. docker run 创建zookeeper容器
  2. docker run -d \
  3. -p 2181:2181 \
  4. --name zk \
  5. --restart always \
  6. -v /home/admin/midware/zk/data:/data \
  7. -v /home/admin/midware/zk/datalog:/datalog \
  8. -t zookeeper:3.4.10
  9. 创建kafka容器
  10. docker run -d \
  11. -p 9092:9092 \
  12. -v  /home/admin/midware/kafka:/kafka \
  13. --name kafka \
  14. --restart always \
  15. --link zk \
  16. --env KAFKA_ZOOKEEPER_CONNECT=192.168.28.200:2181 \
  17. --env KAFKA_ADVERTISED_HOST_NAME=192.168.28.200 \
  18. --env KAFKA_ADVERTISED_PORT=9092  \
  19. docker.io/wurstmeister/kafka

5、elasticsearch(ES) 服务的搭建

  1. 问题:1、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  2. vim /etc/sysctl.conf
  3. vm.max_map_count=655360
  4. sysctl -p 使之生效
  5. 问题2 、文件没有权限,解决方法,为挂载文件夹赋予权限
  6. chmod -R 777 ./es
  7. 创建容器:
  8. docker run -d -p 9200:9200 -p 9300:9300 \
  9. -e ES_JAVA_OPTS="-Xms64m -Xmx64m" \
  10. -v /home/admin/midware/es/data:/usr/share/elasticsearch/data \
  11. -v /home/admin/midware/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  12. --restart always \
  13. --name es \
  14. docker.io/elasticsearch:6.4.0

搭建好的ES集群可以浏览器上的head插件进行查看和管理,界面如下:

连接信息输入自己Linux服务器或者虚拟机的IP:9200,  http://{IP}:9200/

6、Elasticsearch分析工具kibana工具的搭建

     注意kibana的版本一定要和es的版本相匹配才行,版本不匹配是不能够使用的,IP地址更换成自己ES安装的IP地址。首先拉取kibana的镜像: docker pull kibana:6.2.3   /   kibana:6.4.0

使用docker安装kibana

  1. docker run -d \
  2. -e ELASTICSEARCH_URL=http://192.168.*.*:9200 \
  3. -p 5601:5601 \
  4. --name kibana \
  5. --restart always \
  6. kibana:6.2.3

kibana访问地址:  http://192.168.*.*:5601

elasticsearch监控工具cerebro工具搭建与使用:

docker pull lmenezes/cerebro
docker run -d --name cerebro --restart always -p 9100:9000 lmenezes/cerebro

7、nginx的搭建

  1. docker run -d \
  2. -p 80:80 \
  3. -p 443:443 \
  4. -v /home/admin/midware/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  5. -v /home/admin/midware/nginx/conf.d:/etc/nginx/conf.d \
  6. --name nginx \
  7. --net host \
  8. --restart always \
  9. docker.io/nginx:1.10.2

安装完成之后的容器通过docker ps命令查看所有部署容器如下:

  1. [root@localhost admin]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 72a8c14d8bd3 kibana:6.4.0 "/usr/local/bin/ki..." 2 months ago Up 2 minutes 0.0.0.0:5601->5601/tcp kibana
  4. c5f020c367c6 docker.io/nginx:1.10.2 "nginx -g 'daemon ..." 11 months ago Up 2 minutes nginx
  5. 9842377f3933 docker.io/postgres:10.5-alpine "docker-entrypoint..." 14 months ago Up 2 minutes 0.0.0.0:5433->5432/tcp pgv10
  6. 8840da298af8 docker.io/elasticsearch:6.4.0 "/usr/local/bin/do..." 19 months ago Up About a minute 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es
  7. a1588ad156f1 docker.io/wurstmeister/kafka "start-kafka.sh" 19 months ago Up About a minute 0.0.0.0:9092->9092/tcp kafka
  8. 32746adce658 zookeeper:3.4.10 "/docker-entrypoin..." 19 months ago Up 2 minutes 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp zk
  9. fd293e89edf6 docker.io/postgres:9.6-alpine "docker-entrypoint..." 19 months ago Up 2 minutes 0.0.0.0:5432->5432/tcp pg
  10. a619a5df6229 docker.io/consul:1.5.0 "docker-entrypoint..." 19 months ago Up About a minute 0.0.0.0:8300-8302->8300-8302/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/tcp, 8600/udp consul
  11. 306a28b27610 docker.io/redis:5.0.4 "docker-entrypoint..." 19 months ago Up 2 minutes 0.0.0.0:6379->6379/tcp, 0.0.0.0:16379->16379/tcp redis-6379

四、小结

  这里通过docker搭建了几种常用的中间件服务,方便本地开发,后续继续探讨搭建集群版本的中间件。
  注:可以设置docker 开机自启动:
  systemctl enable docker
  这样每次打开虚拟机就会自动启动docker引擎,再加上container我们都设置了自动重启机制(--restart always)
  所以,打开虚拟机之后,稍等片刻,所有的服务都会全部启动!开始使用这些服务吧!

注:欢迎关注博主公众号,后台回复 docker 即可下载2021最新docker视频教程,非常适合新手入门,以及想应用上云、生产实践进阶的朋友。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/136863
推荐阅读
相关标签
  

闽ICP备14008679号