作用
- 由于需要使用多个容器来配置,不同容器间还有先后安装顺序,所以才有了docker-compose
- 在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动、停止和重启应用和应用中的服务以及所有依赖服务的容器。
- 运行docker-compose up,Compose 将启动并运行整个应用程序 配置文件组成。
- services 可以定义需要的服务,每个服务都有自己的名字、使用的镜像、挂载的数据卷所属的网络和依赖的其它服务。
- networks 是应用的网络,在它下面可以定义使用的网络名称,类性。
- volumes是数据卷,可以在此定义数据卷,然后挂载到不同的服务上面使用。
安装
yum -y install epel-release
yum -y install python-pip
yum clean all
pip install docker-compose
- 现在python-pip这个包改成python2-pip和python3-pip,先检查是否有pip,然后使用pip2或者pip3进行安装docker-compose
编写docker-compose.yml
- 这个是yml语法,不给用tab,需要空格缩进。
version: '2'
services:
nginx1:
image: nginx
ports:
- "8080:80"
nginx2:
image: nginx
ports:
- "8081:80"
- 输入
docker-compose up
便会把2个nginx服务挂在前台。 - 通过访问ip加端口号验证是否能访问nginx首页。
- 需要后台启动需要加参数 -d
- 需要重新编译要加参数 --build
docker-compose ps 打印所有的容器
docker-compose stop 停止所有服务
docker-compose logs -f 持续跟踪日志
docker-compose exec nginx1 bash 进入nginx1服务系统
docker-compose rm nginx1 删除服务容器
docker network ls 查看网络网络不会删除
docker-compose down 删除所有的网络和容器
部署数据库web服务器node后端的yml文件范例:
version: '2'
services:
node:
build:
context: ./images/node
dockerfile: Dockerfile
depends_on:
- db
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./images/nginx/config:/etc/nginx/conf.d
- ./images/node/web/public:/public
depends_on:
- node
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: "node"
MYSQL_USER: "yehuo"
MYSQL_PASSWORD: "123456"
volumes:
- db:/var/lib/mysql
volumes:
db:
driver: local
- node后端需要依赖数据库,web服务器依赖node后端,所以会先部署数据库,再部署node,再部署web服务器。
- build会去context配置的目录下找dockerfile进行构建。
- depends_on就是先后顺序。
- image的内容就会从本地找镜像,找不到去网上down
- volumes就是数据卷映射目录。一般local是放在var/lib/docker/volumes下,检查容器可以看见。