Docker Compose(八)
pip install docker-compose

pip install docker-compose --ignore-installed requests


#!/usr/bin/python
#authors: yeasy.github.com
#date: 2013-07-05 import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
import socket
import fcntl
import struct
import pickle
from datetime import datetime
from collections import OrderedDict class HandlerClass(SimpleHTTPRequestHandler):
def get_ip_address(self,ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
def log_message(self, format, *args):
if len(args) < 3 or "" not in args[1]:
return
try:
request = pickle.load(open("pickle_data.txt","r"))
except:
request=OrderedDict()
time_now = datetime.now()
ts = time_now.strftime('%Y-%m-%d %H:%M:%S')
server = self.get_ip_address('eth0')
host=self.address_string()
addr_pair = (host,server)
if addr_pair not in request:
request[addr_pair]=[1,ts]
else:
num = request[addr_pair][0]+1
del request[addr_pair]
request[addr_pair]=[num,ts]
file=open("index.html", "w")
file.write("<!DOCTYPE html> <html> <body><center><h1><font color=\"blue\" face=\"Georgia, Arial\" size=8><em>HA</em></font> Webpage Visit Results</h1></center>");
for pair in request:
if pair[0] == host:
guest = "LOCAL: "+pair[0]
else:
guest = pair[0]
if (time_now-datetime.strptime(request[pair][1],'%Y-%m-%d %H:%M:%S')).seconds < 3:
file.write("<p style=\"font-size:150%\" >#"+ str(request[pair][1]) +": <font color=\"red\">"+str(request[pair][0])+ "</font> requests " + "from <<font color=\"blue\">"+guest+"</font>> to WebServer <<font color=\"blue\">"+pair[1]+"</font>></p>")
else:
file.write("<p style=\"font-size:150%\" >#"+ str(request[pair][1]) +": <font color=\"maroon\">"+str(request[pair][0])+ "</font> requests " + "from <<font color=\"navy\">"+guest+"</font>> to WebServer <<font color=\"navy\">"+pair[1]+"</font>></p>")
file.write("</body> </html>");
file.close()
pickle.dump(request,open("pickle_data.txt","w")) if __name__ == '__main__':
try:
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0"
addr = len(sys.argv) < 2 and "0.0.0.0" or sys.argv[1]
port = len(sys.argv) < 3 and 80 or int(sys.argv[2])
HandlerClass.protocol_version = Protocol
httpd = ServerClass((addr, port), HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
except:
exit()
# Description: This dockerfile uses the python image
# Version: V1.
# Author: LiLe
# Contact: @qq.com FROM python:2.7 #为后续的命令指定工作目录
WORKDIR /code #将指定的src复制到容器的dest,其中src可以是Dockerfile所在目录的一个相对路径;也可以是一个URL,还可以是一个tar文件,会自动解压为目录;这里的.是Dockerfile所在的目录
ADD . /code #Docker服务端暴露的端口号,在容器启动时需要使用-P指定
EXPOSE CMD python index.py
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms listen stats
bind 0.0.0.0:
stats enable
stats uri / frontend balancer
bind 0.0.0.0:
mode http
default_backend web_backends backend web_backends
mode http
option forwardfor
balance roundrobin
server weba weba: check
server webb webb: check
server webc webc: check
option httpchk GET /
http-check expect status
# Description: This yml file order maanger haproxy cluster
# Version: V1.
# Author: LiLe
# Contact: @qq.com weba:
build: ./web
expose:
- webb:
build: ./web
expose:
- webc:
build: ./web
expose:
- haproxy:
image: haproxy:latest
volumes:
- ./haproxy:/haproxy-override
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro #links使得haproxy容器与其他容器相链接,使haproxy容器能直接通过内部端口访问weba、webb、webc
links:
- weba
- webb
- webc #宿主机:容器,把容器的端口暴露给宿主局的端口
ports:
- "80:80"
- "70:70" #容器内暴露的端口
expose:
- ""
- ""
docker-compose up




Docker Compose(八)的更多相关文章
- .Net Core微服务入门全纪录(八)——Docker Compose与容器网络
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 前言 上一篇[.Net Core微服务入门全纪录(七)--IdentityServer4-授权认证]中使用IdentityServer4 ...
- Docker从入门到精通(八)——Docker Compose
恭喜大家,学到这里,对于 docker 的基础玩法大家应该都会了,下面会介绍 docker的一些编排工具. 1.为什么需要 Docker Compose? 官网镇楼:https://www.runoo ...
- 八、docker compose容器编排
一. Docker-Compose 1.1. 什么是Docker Compose Compose 项目是 Docker 官方的开源项目,负责实现 Docker 容器集群的快速编排,开源代码在 http ...
- Docker学习笔记 - Docker Compose 脚本命令
Docker Compose 配置文件包含 version.services.networks 三大部分,最关键的是 services 和 networks 两个部分, version: '2' se ...
- 在Windows Server 2019通过Docker Compose部署Asp.Net Core
一.安装Docker Enterprise 安装文档是: https://docs.docker.com/install/windows/docker-ee/ 安装完成后,如下图 二.首先,拉取一个W ...
- Docker Compose配置文件详解(V3)
Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...
- Docker compose学习笔记
一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ...
- docker compose 笔记
https://www.youtube.com/watch?v=Uez88TWOECg 是基于这个视频做的笔记. Docker Compose: Compose is a tool for defin ...
- 利用docker compose启动gitlab及runner
添加docker compose配置文件 新建文件docker-compose.yml,输入如下内容: gitlab: image: 'gitlab/gitlab-ce:latest' contain ...
随机推荐
- php逐行读取.txt文件内容,并解析每行内容
// 读取nlp text 并存到mongodb public function readNLP(&$errorCode,&$errorMessage) { try{ // $_SER ...
- Android测试(四)——内容供应器泄露
内容供应器:用来存储和查询应用程序中的数据或来自电话的数据,所有内容供应器都具有唯一的统一的资源标识符(URI)以便被识别和查询. 内容供应期命名惯例:以content://开始 当Android A ...
- springboot打成Jar包后部署至Linux服务器上
下面主要记录一下springboot打包成jar包在Linux服务上部署的步骤: 1.通过WinSCP,将相应的Jar文件,复制到Linux指定目录下,如/home/ 2.打开ssh,进入/home目 ...
- tcp滑动窗口详解(2)
http://blog.csdn.net/yujun00/article/details/636495 ARQ与滑动窗口概念 滑动窗口协议,是TCP使用的一种流量控制方法.该协议允许发送方在停止并等 ...
- regex-ways
regex的分组与捕获:分组就是用小括号(str)括起来的东西,就是一个分组.要想得到这些分组的信息,就要想办法捕获.每个分组都有编号,编号规则是从外向内,从左至右. .例如,在表达式 (A)(B(C ...
- ALV基础二:ALV的扩展功能
https://www.cnblogs.com/sapSB/p/8532072.html 参考这个,做扩展,有些人喜欢用OO ALV有些喜欢用普通的CALL FUNC ALV...我只用LVC... ...
- vue配置编译本地打开dist/index.html文件
项目完成后npm run build会生成dist文件,此时直接将dist文件发布到线上即可,若想本地打开dist/index.html可看,一般页面为空,或者报错找不到css和js文件,则需要更改一 ...
- node 安装 vue-cli 创建vue项目
$ npm install -g vue-cli $ vue init webpack-simple my-project $ cd my-project $ npm install $ npm ru ...
- 学了3天EOS, 其它没学会,就学会了发私人数字币
关于 EOS的 铸币及发币(以下是精华) 张永@CoinXP 以下 ...
- Python-接口自动化(二)
python基础知识(二) (二)常用控制流 1.控制语句 分支语句:起到一个分支分流的作用,类似马路上的红绿灯 循环语句:for while 可以使代码不断重复的执行 2.判断语句:关键字是if.. ...