Docker应用栈结构图

Build Django容器

编写docker-file

FROM django
RUN pip install redis

build django-with-redis image

root@swarm-manager:~# docker build -t django-with-redis .
Sending build context to Docker daemon .7kB
Step / : FROM django
---> eb40dcf64078
Step / : RUN pip install redis
---> Running in 61fb045c3277
Collecting redis
Downloading redis-2.10.-py2.py3-none-any.whl (64kB)
Installing collected packages: redis
Successfully installed redis-2.10.
You are using pip version 9.0., however version 9.0. is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Removing intermediate container 61fb045c3277
---> 60c26592c8e5
Successfully built 60c26592c8e5
Successfully tagged django-with-redis:latest

启动容器

启用Redis一个master和两个slave
# docker run -itd --name redis-master redis
# docker run -itd --name redis-slave1 --link redis-master:master redis
# docker run -itd --name redis-slave2 --link redis-master:master redis 启动Django
# docker run -itd --name app1 --link redis-master:db -v ~/Projects/Django/app1:/usr/src/app django-with-redis
# docker run -itd --name app2 --link redis-master:db -v ~/Projects/Django/app2:/usr/src/app django-with-redis 启动HAproxy
# docker run -itd --name HAproxy --link app1:app1 --link app2:app2 -p : -v ~/Projects/HAproxy:/usr/local/sbin haproxy

配置Redis

Redis-Master配置文件, 任意redis兼容的配置文件, 修改以下两个参数

daemonize yes
pidfile /var/run/redis.pid

Redis-Slave配置文件,任意redis兼容的配置文件,修改以下三个参数

daemonize yes
pidfile /var/run/redis.pid
slaveof master

将配置文件复制到Redis中,并启动Redis服务

# docker cp redis.conf redis-master:/usr/local/bin
# docker exec -it redis-master /bin/bash
# cd /usr/local/bin
# redis-server redis.conf

Redis主从测试-Master测试

root@93cf64cdeedd:/data# redis-cli
127.0.0.1:> set hello world
OK
127.0.0.1:> get hello
"world"
127.0.0.1:>

Redis主从测试-Slave测试

root@c84e012871ae:/data# redis-cli
127.0.0.1:> get hello
"world"
127.0.0.1:>

配置Django

在Django容器中,生成Django项目文件

# cd /usr/src/app
# mkdir dockerweb
# django-admin startproject redisweb
# cd redisweb
# python manage.py startapp helloworld

在Docker宿主机修改Django配置文件

root@swarm-manager:~/Projects/Django/App1/dockerweb/redisweb/helloworld# ls
admin.py apps.py __init__.py migrations models.py __pycache__ tests.py views.py

修改views.py

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here. import redis def hello(request):
str = redis.__file__
str += "<br>"
r = redis.Redis(host="db", port=, db=)
info = r.info()
str += ("Set Hi <br>")
r.set("Hi", "HelloWorld-App1")
str += ("Get Hi: %s <br>" % r.get("Hi"))
str += ("Redis Info: <br>")
str += ("Key: Info Value")
for key in info:
str += ("%s: %s <br>" % (key, info[key]))
return HttpResponse(str)

修改settings.py

ALLOWED_HOSTS = ["*",]

# Application definition

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'helloworld'
]

修改url.py

from django.conf.urls import url
from django.contrib import admin
from helloworld.views import hello urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'helloworld$', hello),
]

进入Django容器完成项目生成

# python manage.py makemigrations
# python manage.py migrate

启动Django

# python manage.py runserver 0.0.0.0: &

配置HAProxy

创建配置文件

global
log 127.0.0.1 local0
maxconn
chroot /usr/local/sbin
daemon
nbproc
pidfile /usr/local/sbin/haproxy.pid defaults
log 127.0.0.1 local3
mode http
option dontlognull
option redispatch
retries
maxconn
balance roundrobin timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms listen redis_proxy
bind 0.0.0.0:
stats enable
stats uri /haproxy-stats
server app1 app1: check inter rise fall
server app2 app2: check inter rise fall

启动HAproxy

# cd /usr/local/sbin
# haproxy -f haproxy.cfg

验证

Docker 搭建一个Docker应用栈的更多相关文章

  1. 如何通过Docker搭建一个swoft开发环境

    本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...

  2. 用Docker搭建一个支持https的nginx代理服务

    用Docker搭建一个支持https的nginx代理服务 说明:本文所提的服务只是作者平常测试使用,可能含有未知bug或不成熟的解决方案,仅供参考,请不要用于正式环境,当然,使用过程中有任何问题欢迎提 ...

  3. 5分钟使用docker搭建一个WordPress

    环境为已安装Docker Destop的Windows系统. 过程 使用Docker拉去官方WordPress镜像再进行简单配置是可行的, 但是这里我们使用docker-compose,它会自动根据你 ...

  4. 使用nexus搭建一个docker私服

    使用nexus搭建docker私服 一.需求: 二.实现步骤 1.编写`docker-compose`文件,实现`nexus`的部署 2.修改/usr/lib/systemd/system/docke ...

  5. Swoft 新手向教程 - 通过 Docker 搭建一个开发环境

    本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 PHPer Swoft首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈组件化框架,内置协程网络服务器及常用的 ...

  6. 温故知新,基于Nexus3和Docker搭建私有Docker Mirrors镜像库

    前言 接着上一篇文章关于基于Nexus3和Docker搭建私有Nuget服务的探索,我们可以进一步利用Nexus3来创建一个私有的Docker镜像库满足内部需求. 仓库类型 hosted: 本地存储, ...

  7. 使用Docker搭建Jenkins+Docker持续集成环境(自动化构建发布部署)

    本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...

  8. Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境

    本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...

  9. docker 搭建私有 docker hub

    查找registry 镜像 meiya@meiya:/etc/docker$ clear meiya@meiya:/etc/docker$ docker search registry NAME DE ...

随机推荐

  1. audio的总结

    H5的audio谁都会用, 照着官方api放个标签, play, stop... 实际运用中需要一些兼容性封装: //audio $.audio = function(params) { var $a ...

  2. redis配置详解(中英文)

    V2.8.21: (中英字幕同步) # Redis configuration file example#* Redis 配置文件例子 # Note on units: when memory siz ...

  3. 误: Apache shutdown unexpectedly解决办法

    from:http://www.wopus.org/wordpress-basic/getting-started/2536.htmlXAMPP错  2015年10月20日15:58:19 新手上路发 ...

  4. linux用户与组管理

    普通用户的管理 用户管理的基本任务包括添加新用户.删除用户.修改用户属性以及对现有用户的访问参数进行设置.与密切 相关的文件包含/etc/passwd./etc/shadow以及/home目录下的文件 ...

  5. Android开发:《Gradle Recipes for Android》阅读笔记1.5

    这节讲的是如何如何添加JAVA依赖库. 默认的android项目有两个build.gradle文件,分别位于顶级目录,和应用自己的目录下(通常放在一个叫app的目录下面). gradle支持多种方式列 ...

  6. &#x编码转换成汉字

    import java.io.UnsupportedEncodingException; public class UnicodeDecoder { public static String esca ...

  7. Spring整合Velocity模版引擎

    1. 首先通过pom.xml自动加载velocity扩展包到工程: <dependency> <groupId>velocity</groupId> <art ...

  8. POJ 1125 Stockbroker Grapevine【floyd简单应用】

    链接: http://poj.org/problem?id=1125 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  9. Selenium IDE的使用

    Selenium IDE 的作用 Selenium IDE 是Firefox 浏览器的一个插件, 它会记录你对Firefox的操作,并且可以回放它的操作. 在实际自动化测试中,不会用Selenium ...

  10. Servlet 3.0 介绍

    1. 概述 注解代替 web.xml 配置文件 异步处理 对上传的支持 2. 注解代替 web.xml 配置文件 使用方法 在 Servlet 类上添加 @WebServlet(urlPatterns ...