环境说明:
主机名 | 操作系统版本 | IP地址 | docker版本 | Compose版本 | VMware版本 |
---|---|---|---|---|---|
docker01 | Ubuntu 16.04.5 | 172.27.9.71 | 18.09.2 | 1.24.0 | 12.5.2 |
本文所有测试都在Vmware虚拟机上完成
ubuntu安装详见:Ubuntu16.04.5以lvm方式安装全记录
docker安装详见:Ubuntu16.04安装Docker
Compose是用于定义和运行多个Docker应用的工具。使用yaml文件可以快速的创建和管理基于Docker容器的应用集群。
Compose可以管理应用的整个生命周期,包括:
Compose是Docker官方开源项目,负责实现对基于Docker容器的多应用服务的快速编排。
各版本下载地址:https://github.com/docker/compose/releases
root@docker01:~# curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
root@docker01:~# chmod +x /usr/local/bin/docker-compose
root@docker01:~# docker-compose --version
docker-compose version 1.24.0, build 0aa59064
root@docker01:~# curl -L https://raw.githubusercontent.com/docker/compose/1.24.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13258 100 13258 0 0 7823 0 0:00:01 0:00:01 --:--:-- 7821
root@docker01:~# source /etc/bash_completion.d/docker-compose
root@docker01:~# docker-compose
build config down exec images logs port pull restart run start top up
bundle create events help kill pause ps push rm scale stop unpause version
加载并用tab验证命令补全。
本文以搭建Web服务器Django为例,演示Docker Compose的使用方法。
root@docker01:~# mkdir compose-django
在root家目录/root下创建项目目录compose-django
root@docker01:~# cd compose-django/
root@docker01:~/compose-django# more Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
该Dockerfile用于构建后面的web镜像
root@docker01:~/compose-django# more requirements.txt
Django>=2.0,<3.0
psycopg2>=2.7,<3.0
该文件用于指定Django和数据库psycopg2版本,在Dockerfile会使用到。
root@docker01:~/compose-django# more docker-compose.yml
version: '3'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
docker-compose.yml描述了组成应用的服务:db和web,还有镜像、卷、端口等信息。
root@docker01:~/compose-django# docker-compose run web django-admin startproject composeexample .
compose构建web镜像,运行web容器并在容器内执行 django-admin startproject composeexample,创建工程composeexample,注意该命令最后的'.'表示执行路径为当前目录。
root@docker01:~/compose-django# view composeexample/settings.py
ALLOWED_HOSTS = ['*']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
修改ALLOWED_HOSTS,允许所有连接;修改数据库连接设置。
项目目录/root/compose-django下启动服务
root@docker01:~/compose-django# docker-compose up
如果希望在后台运行可以加参数“-d”
新窗口中查看当前运行的容器
容器的默认名字为:项目名+服务名+_1
本文参考:
https://docs.docker.com/compose/install/
https://docs.docker.com/compose/compose-file/
https://docs.docker.com/compose/django/