Docker应用中,为了达到高可用,可以做很多的web服务,保持服务的稳定性,在web的出口处是haproxy等负载应用。
命令:
在和yml文件的同文件下,执行任何的docker-pose的命令,否则是提示找不到文件的。
他会根据.yml文件中的yml自动下载和构建,文中的dicker images是获取的dockerhub上线的资源,尝试过阿里云和dockercn,可能和环境问题,python2.7运行pip安装时报错。
wordpress是你在yml中写的web程序,上面的含义是:
docker-compose ps 查看是否创建成功
docker-compose stop 通知容器,但是保留数据
docker-compose start 启动容器
下面是示例:
version: '3'
services:
wordpress:
image: wordpress
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
networks:
- my-bridge
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
- /home/mysql-data:/var/lib/mysql
networks:
- my-bridge
lb:
image: dockercloud/haproxy
links:
- wordpress
ports:
- 8080:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- my-bridge
volumes:
mysql-data:
networks:
my-bridge:
driver: bridge
app.py
from flask import Flask
from redis import Redis
import os
import socket
app = 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: redis
web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:5000
environment:
REDIS_HOST: redis
Dockerfile
FROM python:2.7
LABEL maintaner="Peng Xiao [email protected]"
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 socket
app = 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 [email protected]"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 80
CMD [ "python", "app.py" ]
Dockerfile
version: "3"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redis
lb:
image: dockercloud/haproxy
links:
- web
ports:
- 8080:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock