Docker应用中,为了达到高可用,可以做很多的web服务,保持服务的稳定性,在web的出口处是haproxy等负载应用。
命令:
在和yml文件的同文件下,执行任何的docker-pose的命令,否则是提示找不到文件的。
docker up -d 后台启动某个程序
他会根据.yml文件中的yml自动下载和构建,文中的dicker images是获取的dockerhub上线的资源,尝试过阿里云和dockercn,可能和环境问题,python2.7运行pip安装时报错。
docker-compose up --scale wordpress=20 -d
wordpress是你在yml中写的web程序,上面的含义是:
通过scale的方式创建wordpress 20台机器
docker-compose ps 查看是否创建成功
docker-compose stop 通知容器,但是保留数据
docker-compose start 启动容器
下面是示例:
示例一:
docker-compose+mysql+wordpress+dockercloud/haproxy
version: '3'services:wordpress:image: wordpressenvironment:WORDPRESS_DB_HOST: mysqlWORDPRESS_DB_PASSWORD: rootnetworks:- my-bridgemysql:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: wordpressvolumes:- /home/mysql-data:/var/lib/mysqlnetworks:- my-bridgelb:image: dockercloud/haproxylinks:- wordpressports:- 8080:80volumes:- /var/run/docker.sock:/var/run/docker.sock networks:- my-bridge
volumes:mysql-data:networks:my-bridge:driver: bridge
实例二:
flask-redis
app.py
from flask import Flask
from redis import Redis
import os
import socketapp = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)@app.route('/')
def hello():redis.incr('hits')return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())if __name__ == "__main__":app.run(host="0.0.0.0", port=5000, debug=True)
yml文件
version: "3"services:redis:image: redisweb:build:context: .dockerfile: Dockerfileports:- 8080:5000environment:REDIS_HOST: redis
Dockerfile
FROM python:2.7
LABEL maintaner="Peng Xiao xiaoquwl@gmail.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]
示例三:
app.py
from flask import Flask
from redis import Redis
import os
import socketapp = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)@app.route('/')
def hello():redis.incr('hits')return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())if __name__ == "__main__":app.run(host="0.0.0.0", port=80, debug=True)
Dockerfile
[root@docker-host lb-scale]# cat Dockerfile
FROM python:2.7
LABEL maintaner="Peng Xiao xiaoquwl@gmail.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 80
CMD [ "python", "app.py" ]
Dockerfile
version: "3"services:redis:image: redisweb:build:context: .dockerfile: Dockerfileenvironment:REDIS_HOST: redislb:image: dockercloud/haproxylinks:- webports:- 8080:80volumes:- /var/run/docker.sock:/var/run/docker.sock