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. point-position2修改版

    说明: 在共面直线测试中,由于计算误差等原因,共面条件判断不准,但计算结果依然正确. // point-position2.cpp : 定义控制台应用程序的入口点. #include "st ...

  2. selenium的元素定位-iframe

    # name = top-frame # 如果iframe有name属性 或 id属性则 可以直接在frame种填写 # 如果没有name和id属性 frame() 可以接受elementOBj el ...

  3. No image!使用border-color属性来制作小三角形

    border属性在项目中使用的还是蛮频繁的.例如页签.按钮这样的. border简写属性是按照如下属性设置的: border:border-width/border-style/border-colo ...

  4. 关于后台传来的json是含英文字母的string

    最近帮朋友写东西,遇上一个比较坑的后台,传来的json是字符串,并且还伴有英文字符,类似 callback({xxx:xxx,xxx:xxx}),我打印了一下后台传来的数据格式,发现时string,所 ...

  5. git commit -a -m "M 1、引入mixin,公共样式mixin传参处理;";git push origin master:master

    <script> import wepy from 'wepy' import api from '../api/api' export default class recharge ex ...

  6. JavaScript数据结构与算法-字典练习

    字典的实现 // 字典类 function Dictionary () { this.add = add; this.dataStore = new Array(); this.find = find ...

  7. 如何搭建一个 Git 版本控制服务端?

    Gogs 下载和安装 https://github.com/gogits/gogs # 下载二进制压缩包 不检查服务器证书 root@cheungxiongwei:~# wget --no-check ...

  8. HNOI2019爆零记

    HNOI2019真-爆零祭 我怎么这么菜QAQ day-37 从学科溜过来搞OI. 班主任一直在谈论我退役的事情,这就是NOIP挂分的后果...说我没考好就找理由,人家xxxxxxx可不是xxxxxx ...

  9. Hosts文件的位置

    Operating System Version(s) Location Unix, Unix-like, POSIX   /etc/hosts Microsoft Windows 3.1 %WinD ...

  10. 在GCE上安装Apache、tomcat等

    1.安装Apache2.2.3 (虚机的操作系统是CentOS7) sudo yum install wget -y cd /opt sudo wget http://archive.apache.o ...