Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。
Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
- 清空所有镜像和容器
清空全部镜像: docker image prune / docker rmi $(docker images -q)
停止并且删除所有正在运行的容器: docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)
批量清理已经停止容器: docker container prune - 安装
1
2
3
4
5
6
7二进制安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
PIP 安装
$ sudo pip install -U docker-compose
命令说明
1 | docker-compose [COMMAND] --help |
https://yeasy.gitbooks.io/docker_practice/compose/commands.html
Compose 模板文件
https://yeasy.gitbooks.io/docker_practice/compose/compose_file.html
创建WordPress
1 | version: "3" |
构建并运行项目: docker-compose up -d
Django
Dockerfile
因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面
那么我们可以通过编辑 Dockerfile 文件来指定 Docker 容器要安装内容。
vim Dockerfile1
2
3
4
5
6
7FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
以上内容指定应用将使用安装了 Python 以及必要依赖包的镜像
requirements写入依赖
vim requirements.txt1
2Django>=2.0,<3.0
psycopg2>=2.7,<3.0
docker-compose.yml
vim docker-compose.yml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15version: "3"
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
运行
结构大概是这种的1
2
3
4
5[root@iZj6c9rzmdqczj81nwgtqgZ docker]# tree django/
django/
├── docker-compose.yml
├── Dockerfile
└── requirements.txt
运行: docker-compose run web django-admin startproject django_example .
由于 web 服务所使用的镜像并不存在,所以 Compose 会首先使用 Dockerfile 为 web 服务构建一个镜像,
接着使用这个镜像在容器里运行 django-admin startproject django_example 指令。
这将在当前目录生成一个 Django 应用。
1
2
3
4
5
6
7
8
9├── django_example
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── docker-compose.yml
├── Dockerfile
├── manage.py
└── requirements.txt
如果你的系统是 Linux,记得更改文件权限chmod -R 777 django_example
修改数据库配置
1 | ALLOWED_HOSTS = ['www.domain.com'] # 修改你的域名 |
运行: docker-compose up