Docker-Docker Compose
1:什么是Dock ComposeDocker Compose实际就是一个yml批处理文件,用来管理多个容器2:yml文件的格式2.1:yml文件简介yml文件默认的名字为:docker-compose.ymlyml包含三大概念:Services、Networks、Volumes一个service代表一个container(这个container可以从docker hub上拉取...
·
1:什么是Dock Compose
- Docker Compose实际就是一个yml批处理文件,用来管理多个容器
2:yml文件的格式
2.1:yml文件简介
- yml文件默认的名字为:docker-compose.yml
- yml包含三大概念:Services、Networks、Volumes
- 一个service代表一个container(这个container可以从docker hub上拉取的image创建也可以用Dockerfile build出来的image创建)
- service的启动类似docker run,我们可以给其指定network和volume
2.2:yml文件的格式与写法
前提:我们本地需要有mysql和wordpress这两个镜像
version: '3'
services:
wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
networks:
- my-bridge
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
- mysql-data:/var/lib/mysql
networks:
- my-bridge
volumes:
mysql-data:
networks:
my-bridge:
driver: bridge
3:Docker-Compose的安装与使用
3.1:Docker-Compose的安装
随着docker的安装Windows和MAC的系统是会默认安装的,Linux的系统需要手动安装
参考:https://docs.docker.com/compose/install/
-
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
sudo chmod +x /usr/local/bin/docker-compose
-
docker-compose --version #查看docker-compose的版本
3.2:Docker-Compose启动容器
- 安装好Docker-Compose
- 新建文件夹(例如Demo)
- 创建docker-compose.yml文件 并且copy上述2.2的内容到该yml文件中 就可以完成wordpress博客系统的搭建
- docker-compose up
注意:docker-compose up启动要保证该目录下的yml文件名称为docker-compose.yml,若为其他 xxx.yml,启动命令则需要改成
docker-compose -f xxx.yml up
3.3:Docker-Compose的基本操作
docker-compose -f [yml fileName] start
#启动yml文件对应的contianers 如果yml文件被命名为docker-compose.yml则 -f [yml fileName]则不用写
docker-compose -f [yml fileName] stop
#停止yml文件对应启动的contianers
docker-compose -f [yml fileName] down
#删除yml文件创建的 包含containers和networks等
4:Docker-Compose部署一个简单的python flask程序
4.1:Python程序如下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)
4.2: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" ]
4.3:yml文件如下 命名为docker-compose.yml
version: "3"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:5000 #将docker contianer的5000端口映射到本地的8080端口
environment:
REDIS_HOST: redis
4.4:linux上的部署
- 将上述三个文件copy到linux机器下(新建一个目录用来存放这三个文件)
- 执行docker-compose up -d (后台运行这些containers)
- ie输入http://IP:8080/ 可以访问到该app
执行效果如下
更多推荐
已为社区贡献3条内容
所有评论(0)