一. Ubuntu16.04+Django+Redis+Nginx的Web项目Docker化

1.创建Django项目的image

  1. # 创建项目image 执行 docker build -t ccnu_resource_pub -f docker/app/Dockerfile .
  2. # 把ubuntu:xenial作为基础镜像 如果不存在则pull远程
  3. FROM ubuntu:xenial
  4.  
  5. # 把docker/common/sources.list 拷贝到镜像里的文件系统中
  6. ADD ./docker/common/sources.list /etc/apt/sources.list
  7.  
  8. # 运行linux指令
  9. RUN apt-get -y update
  10.  
  11. # PYTHON环境
  12. WORKDIR /proj
  13. # 把requirements.txt拷贝到/proj文件下
  14. ADD requirements.txt /proj
  15. RUN apt-get install -y python python-dev python3 python3-dev python3-pip
  16. RUN apt-get install -y libmysqlclient-dev
  17. RUN pip3 install --trusted-host pypi.python.org -r requirements.txt
  18. RUN pip3 install uwsgi
  19.  
  20. # ES日志目录
  21. RUN mkdir -p /var/log/ccnu_resource
  22. RUN chmod -R 777 /var/log/ccnu_resource

2.创建Nginx的image

  1. # 创建nginx的image docker build -t ccnu_resource_pub_nginx -f docker/nginx/Dockerfile .
  2.  
  3. FROM ubuntu:xenial
  4.  
  5. ADD ./docker/common/sources.list /etc/apt/sources.list
  6.  
  7. RUN apt-get -y update && apt-get -y update --fix-missing && apt-get -y update
  8.  
  9. RUN apt-get install -y nginx

3.创建Redis的image

  1. # 创建Redis的image docker build -t ccnu_resource_pub_redis -f docker/redis/Dockerfile .
  2.  
  3. FROM ubuntu:xenial
  4.  
  5. ADD ./docker/common/sources.list /etc/apt/sources.list
  6. RUN apt-get -y update && apt-get -y update --fix-missing && apt-get -y update
  7.  
  8. RUN apt-get install -y redis-server

4.创建docker-compose.yml

  1. # version表示定义的 docker-compose.yml 文件内容所采用的版本,目前 Docker Compose 的配置文件已经迭代至了第三版
  2. version: "3"
  3.  
  4. # docker-compose.yml 的核心部分,定义了容器的各项细节
  5. services:
  6. redis:
  7. # 指定镜像
  8. image: ccnu_resource_pub_redis:latest
  9. # 端口映射 最好使用引号将端口映射的定义包裹起来,由于 YAML 格式对 xx:yy 这种格式的解析有特殊性,在设置小于 60 的值时,会被当成时间而不是字符串来处理
  10. ports:
  11. - "6379:6379"
  12. command: redis-server --appendonly yes
  13. logging:
  14. driver: "json-file"
  15. options:
  16. max-size: "200k"
  17. max-file: "10"
  18.  
  19. web:
  20. image: ccnu_resource_pub:latest
  21. ports:
  22. - "8000:8000"
  23. command: python3 manage.py runserver 0.0.0.0:8000
  24. logging:
  25. driver: "json-file"
  26. options:
  27. max-size: "200k"
  28. max-file: "10"
  29. # 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器
  30. volumes:
  31. - .:/proj
  32.  
  33. # 依赖 表示启动web的compose前需先启动 redis
  34. depends_on:
  35. - redis
  36.  
  37. celery:
  38. image: ccnu_resource_pub:latest
  39. command: celery worker -A ccnu_resource -l info
  40. logging:
  41. driver: "json-file"
  42. options:
  43. max-size: "200k"
  44. max-file: "10"
  45. depends_on:
  46. - web
  47. volumes:
  48. - .:/proj

二. 单机ELK部署Docker化

1. 进入ELK的docker网址(可能要翻墙) https://www.docker.elastic.co/,选择最新稳定版6.54版

使用官方提供的docker-compose.yml创建ES的docker-compose.yml

  1. version: '2.2'
  2. services:
  3. elasticsearch:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
  5. container_name: elasticsearch
  6. environment:
  7. - cluster.name=docker-cluster
  8. - bootstrap.memory_lock=true
  9. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  10. ulimits:
  11. memlock:
  12. soft: -1
  13. hard: -1
  14. volumes:
  15. - esdata1:/usr/share/elasticsearch/data
  16. ports:
  17. - 9200:9200
  18. networks:
  19. - esnet
  20. elasticsearch2:
  21. image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
  22. container_name: elasticsearch2
  23. environment:
  24. - cluster.name=docker-cluster
  25. - bootstrap.memory_lock=true
  26. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  27. - "discovery.zen.ping.unicast.hosts=elasticsearch"
  28. ulimits:
  29. memlock:
  30. soft: -1
  31. hard: -1
  32. volumes:
  33. - esdata2:/usr/share/elasticsearch/data
  34. networks:
  35. - esnet
  36.  
  37. volumes:
  38. esdata1:
  39. driver: local
  40. esdata2:
  41. driver: local
  42.  
  43. networks:
  44. esnet:

2. 然后进入配置页面https://www.elastic.co/guide/en/logstash/6.5/docker-config.html, 查看Logstash的docker配置

  1. logstash:
  2. image: docker.elastic.co/logstash/logstash:6.5.4
  3. container_name: logstash
  4. networks:
  5. - esnet
  6. depends_on:
  7. - elasticsearch
  8. - elasticsearch2
  9. environment:
  10. - "LS_JAVA_OPTS=-Xms512m -Xmx512m"

3. 然后进入配置页面https://www.elastic.co/guide/en/kibana/6.5/docker.html, 查看Kibana的docker配置

  1. kibana:
  2. image: docker.elastic.co/kibana/kibana:6.5.4
  3. container_name: kibana
  4. ports:
  5. - "5601:5601"
  6. networks:
  7. - esnet
  8. depends_on:
  9. - elasticsearch
  10. - elasticsearch2

4. 整合docker-compose.ym

  1. version: '2.2'
  2. services:
  3. elasticsearch:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
  5. container_name: elasticsearch
  6. environment:
  7. - cluster.name=docker-cluster
  8. - bootstrap.memory_lock=true
  9. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  10. ulimits:
  11. memlock:
  12. soft: -1
  13. hard: -1
  14. volumes:
  15. - esdata1:/usr/share/elasticsearch/data
  16. ports:
  17. - 9200:9200
  18. networks:
  19. - esnet
  20. elasticsearch2:
  21. image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
  22. container_name: elasticsearch2
  23. environment:
  24. - cluster.name=docker-cluster
  25. - bootstrap.memory_lock=true
  26. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  27. - "discovery.zen.ping.unicast.hosts=elasticsearch"
  28. ulimits:
  29. memlock:
  30. soft: -1
  31. hard: -1
  32. volumes:
  33. - esdata2:/usr/share/elasticsearch/data
  34. networks:
  35. - esnet
  36. logstash:
  37. image: docker.elastic.co/logstash/logstash:6.5.4
  38. container_name: logstash
  39. networks:
  40. - esnet
  41. depends_on:
  42. - elasticsearch
  43. - elasticsearch2
  44. environment:
  45. - "LS_JAVA_OPTS=-Xms512m -Xmx512m"
  46. kibana:
  47. image: docker.elastic.co/kibana/kibana:6.5.4
  48. container_name: kibana
  49. ports:
  50. - "5601:5601"
  51. networks:
  52. - esnet
  53. depends_on:
  54. - elasticsearch
  55. - elasticsearch2
  56.  
  57. volumes:
  58. esdata1:
  59. driver: local
  60. esdata2:
  61. driver: local
  62.  
  63. networks:
  64. esnet:

配置好后,执行sudo docker-compose up即可成功启动ELK

开发环境中Docker的使用的更多相关文章

  1. vagrant特性——基于docker开发环境(docker和vagrant的结合)-1-基本使用

    Docker vagrant提供了使用Docker作为provider(其他的provider有virtualBox.VMware\hyper-V等)的开箱即用支持.这允许你的开发环境由Docker容 ...

  2. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  3. Wabpack系列:在webpack+vue开发环境中使用echarts导致编译文件过大怎么办?

    现象,在一个webpack+vue的开发环境中,npm install echarts --save了echarts,然后在vue文件中直接使用 import echarts from 'echart ...

  4. 开发环境中biztalk项目设置注意事项(转)

      适用版本:biztalk 2006 适用环境:开发测试环境 在开发过程中,在开发环境中,一定会是一个对项目不断的修改.编译.部署.测试,查看测试结果,发现有问题,然后回到开发环境再修改.编译.部署 ...

  5. 将linux用在开发环境中

    我是如何将linux用在开发环境中的 1.为什么不直接安装Linux在主机 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件 ...

  6. Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕

    Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...

  7. 在CodeBlocks 开发环境中配置使用OpenCV (ubuntu系统)

    CodeBlocks是一个开放源代码的全功能的跨平台C/C++集成开发环境.CodeBlocks由纯粹的C++语言开发完毕,它使用了蓍名的图形界面库wxWidgets.对于追求完美的C++程序猿,再也 ...

  8. 如何将linux用在开发环境中的

    如何将linux用在开发环境中的 1.我为什么要写这篇文章 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件费心费力的事,而 ...

  9. C# 动态加载组件后怎么在开发环境中调试

    动态加载组件 那就是简单的Assembly.Load动态加载dll而以.这网上资料也有不少.基本的思路基本上就是在本地上一个指定目录如[plugs]存在着一堆dll文件.主程序在初始运行时一般会把指定 ...

随机推荐

  1. Struts2 返回 json 格式数据

    最近由于工作原因,没时间更新,那些没能看到的同学,很抱歉了,话不多说,继续写~~ 关于json的返回需要用到一个工具包来将书转换为json格式,在此用到的jar包为: import net.sf.js ...

  2. Java调用第三方http接口的方式

    1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适.很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信.天气等). 在J ...

  3. 【转载】C++ STL快速入门

    https://www.cnblogs.com/skyfsm/p/6934246.html

  4. hibernate自定义校验Valid

    步骤: 1.定义注解: import javax.validation.Constraint; import javax.validation.Payload; import java.lang.an ...

  5. Access-Control-Allow-Origin设置跨域

    我来自己写一下答案,以给后来的朋友一点思路和建议:1,首先把Access-Control-Allow-Origin设置成*是不妥的,自己的接口服务器不能允许所有人都可以访问.2,具体哪里可以设置Acc ...

  6. MySQL中使用group_concat()函数数据字符过长报错的问题解决方法

    最近在办公软件项目,在开发权限指标遇到一个问题:我们系统的一些逻辑处理是用存储过程实现的,但是有一天客户反馈说权限指标分配报错,查了分配的权限数据牵扯到的数据权限基础资源,没有问题.权限指标分配的存储 ...

  7. Python:正则表达式(二):如何使用re.search()返回的匹配对象中的具体内容呢??

    在上一篇中讲述了re.seach()会返回一个对象格式的数据,如下:<_sre.SRE_Match object; span=(16, 24), match='${phone}'> 那么问 ...

  8. 关于vscode插件 的一些体验

    一 vsCode git 首先vscode 继承了 git 在使用git前 先手动创建一个文件夹  用来clone已有项目 然后将 clone下来的项目放入工作区 右上角的小转转就是 pull文件 更 ...

  9. 2018-2019-2 网络对抗技术 20165337 Exp3 免杀原理与实践

    基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测:特征码就是一段数据.如果一个可执行文件(或其他运行的库.脚本等)包含特定的数据则被认为是恶意代码.AV软件厂商要做的就是尽量搜集最全 ...

  10. springboot2.1.3集成单节点elasticsearch6.4.0

    本案例写了一个关于医生医院搜索的例子,包括求和模式下的打分(分值与相关性有关)搜索,单节点时切勿配置节点名称和节点ip.github地址:https://github.com/zhzhair/spri ...