Update docker-compose

pull/204/head
khs1994 2017-11-01 00:20:30 +08:00
parent 833aa02d92
commit 4f42a0e730
7 changed files with 85 additions and 76 deletions

View File

@ -82,7 +82,7 @@
* [容器格式](underly/container_format.md)
* [网络](underly/network.md)
* [Docker 三剑客之 Compose 项目](compose/README.md)
* [简介](compose/intro.md)
* [简介](compose/introduction.md)
* [安装与卸载](compose/install.md)
* [使用](compose/usage.md)
* [命令说明](compose/commands.md)

View File

@ -1,9 +1,9 @@
## 使用 Django
我们现在将使用 Compose 配置并运行一个 Django/PostgreSQL 应用。在此之前,先确保 Compose 已经 [安装](install.md)。
我们现在将使用 Docker Compose 配置并运行一个 `Django/PostgreSQL` 应用。
在一切工作开始前,需要先设置好三个必要的文件。
第一步,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 `Dockerfile` 文件来指定 Docker 容器要安装内容。内容如下:
第一步,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 `Dockerfile` 文件来指定 Docker 容器要安装内容。内容如下:
```
FROM python:2.7
@ -24,20 +24,23 @@ psycopg2
```
就是这么简单。
第三步,`docker-compose.yml` 文件将把所有的东西关联起来。它描述了应用的构成(一个 web 服务和一个数据库)、使用的 Docker 镜像、镜像之间的连接、挂载到容器的卷,以及服务开放的端口。
第三步,`docker-compose.yml` 文件将把所有的东西关联起来。它描述了应用的构成(一个 web 服务和一个数据库)、使用的 Docker 镜像、镜像之间的连接、挂载到容器的卷,以及服务开放的端口。
```
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
```yaml
version: "3"
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
```
查看 [`docker-compose.yml` 章节](yml_ref.md) 了解更多详细的工作机制。
@ -69,7 +72,7 @@ DATABASES = {
```
这些信息是在 [postgres](https://registry.hub.docker.com/_/postgres/) Docker 镜像固定设置好的。
然后,运行 `docker-compose up`
```
Recreating myapp_db_1...
Recreating myapp_web_1...
@ -86,7 +89,7 @@ myapp_web_1 | Django version 1.6.1, using settings 'django_example.settings'
myapp_web_1 | Starting development server at http://0.0.0.0:8000/
myapp_web_1 | Quit the server with CONTROL-C.
```
这个 web 应用已经开始在你的 docker 守护进程里监听着 5000 端口了(如果你有使用 boot2docker ,执行 `boot2docker ip` ,就会看到它的地址)
这个 web 应用已经开始在你的 docker 守护进程里监听着 5000 端口了。
你还可以在 Docker 上运行其它的管理命令,例如对于同步数据库结构这种事,在运行完 `docker-compose up` 后,在另外一个终端运行以下命令即可:

View File

@ -1,10 +1,8 @@
## 安装与卸载
Compose 目前支持 Linux 和 Mac OS 平台,两者的安装过程大同小异
Compose 目前支持 Linux、macOS、Windows 10 三大平台
安装 Compose 之前,要先安装 Docker需要 Docker Engine 1.7.1+),请参考第一部分中章节,在此不再赘述。
Compose 可以通过 Python 的 pip 工具进行安装,可以直接下载编译好的二进制文件使用,甚至直接运行在 Docker 容器中。
Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至直接运行在 Docker 容器中。
前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。
@ -76,7 +74,7 @@ $ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/complet
这些二进制文件,下载后直接放到执行路径下,并添加执行权限即可。
例如,在 Linux 平台上。
例如,在 Linux 和 macOS 平台上。
```
$ sudo curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
@ -161,4 +159,4 @@ $ sudo rm /usr/local/bin/docker-compose
```sh
$ sudo pip uninstall docker-compose
```
```

View File

@ -14,7 +14,7 @@ Compose 恰好满足了这样的需求。它允许用户通过一个单独的 `d
Compose 中有两个重要的概念:
* 服务service:一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
* 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
* 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 `docker-compose.yml` 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

View File

@ -1,10 +1,10 @@
## 使用 Rail
我们现在将使用 Compose 配置并运行一个 Rails/PostgreSQL 应用。在开始之前,先确保 Compose 已经 [安装](install.md)。
我们现在将使用 Compose 配置并运行一个 Rails/PostgreSQL 应用。
在一切工作开始前,需要先设置好三个必要的文件。
首先,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 `Dockerfile` 文件来指定 Docker 容器要安装内容。内容如下:
首先,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 `Dockerfile` 文件来指定 Docker 容器要安装内容。内容如下:
```
FROM ruby
@ -24,23 +24,26 @@ gem 'rails', '4.0.2'
```
最后,`docker-compose.yml` 文件才是最神奇的地方。 `docker-compose.yml` 文件将把所有的东西关联起来。它描述了应用的构成(一个 web 服务和一个数据库)、每个镜像的来源(数据库运行在使用预定义的 PostgreSQL 镜像web 应用侧将从本地目录创建)、镜像之间的连接,以及服务开放的端口。
```yaml
version: "3"
services:
db:
image: postgres
ports:
- "5432"
web:
build: .
command: bundle exec rackup -p 3000
volumes:
- .:/myapp
ports:
- "3000:3000"
links:
- db
```
db:
image: postgres
ports:
- "5432"
web:
build: .
command: bundle exec rackup -p 3000
volumes:
- .:/myapp
ports:
- "3000:3000"
links:
- db
```
所有文件就绪后,我们就可以通过使用 `docker-compose run` 命令生成应用的骨架了。
所有文件就绪后,我们就可以通过使用 `docker-compose run` 命令生成应用的骨架了。
```
$ docker-compose run web rails new . --force --database=postgresql --skip-bundle
```
@ -98,6 +101,6 @@ myapp_web_1 | [2014-01-17 17:16:29] INFO WEBrick::HTTPServer#start: pid=1 port=
```
$ docker-compose run web rake db:create
```
这个 web 应用已经开始在你的 docker 守护进程里面监听着 3000 端口了(如果你有使用 boot2docker ,执行 `boot2docker ip` ,就会看到它的地址)
这个 web 应用已经开始在你的 docker 守护进程里面监听着 3000 端口了。
![](../_images/docker-compose-rails-screenshot.png)

View File

@ -3,8 +3,8 @@
### 术语
首先介绍几个术语。
* 服务service:一个应用容器,实际上可以运行多个相同镜像的实例。
* 项目(project):由一组关联的应用容器组成的一个完整业务单元。
* 服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。
* 项目 (project):由一组关联的应用容器组成的一个完整业务单元。
可见一个项目可以由多个服务容器关联而成Compose 面向项目进行管理。
@ -98,7 +98,7 @@ $ touch index.html
```
#### Dockerfile
生成一个 Dockerfile,内容为
编写 `Dockerfile` 文件,内容为
```bash
FROM python:2.7
WORKDIR /code
@ -108,7 +108,7 @@ CMD python index.py
```
### haproxy 目录
在其中生成一个 `haproxy.cfg` 文件,内容为
编写 `haproxy.cfg` 文件,内容为
```bash
global
log 127.0.0.1 local0
@ -146,23 +146,25 @@ backend web_backends
### docker-compose.yml
编写 docker-compose.yml 文件,这个是 Compose 使用的主模板文件。内容十分简单,指定 3 个 web 容器,以及 1 个 haproxy 容器。
```bash
weba:
```yaml
version: "3"
services:
weba:
build: ./web
expose:
- 80
webb:
webb:
build: ./web
expose:
- 80
webc:
webc:
build: ./web
expose:
- 80
haproxy:
haproxy:
image: haproxy:latest
volumes:
- ./haproxy:/haproxy-override
@ -180,7 +182,7 @@ haproxy:
```
### 运行 compose 项目
现在 compose-haproxy-web 目录长成下面的样子。
现在 compose-haproxy-web 目录结构如下:
```bash
compose-haproxy-web
├── docker-compose.yml

View File

@ -1,14 +1,15 @@
## 使用 Wordpress
Compose 让 Wordpress 运行在一个独立的环境中很简易。
[安装](install.md) Compose ,然后下载 Wordpress 到当前目录:
Compose 可以很便捷的让 Wordpress 运行在一个独立的环境中。
```
首先下载 Wordpress 到当前目录:
```bash
wordpress.org/latest.tar.gz | tar -xvzf -
```
这将会创建一个叫 wordpress 目录,你也可以重命名成你想要的名字。在目录里面,创建一个 `Dockerfile` 文件,定义应用的运行环境:
```
```docker
FROM orchardup/php5
ADD . /code
```
@ -17,25 +18,28 @@ ADD . /code
下一步,`docker-compose.yml` 文件将开启一个 web 服务和一个独立的 MySQL 实例:
```
web:
build: .
command: php -S 0.0.0.0:8000 -t /code
ports:
- "8000:8000"
links:
- db
volumes:
- .:/code
db:
image: orchardup/mysql
environment:
MYSQL_DATABASE: wordpress
```yaml
version: "3"
services:
web:
build: .
command: php -S 0.0.0.0:8000 -t /code
ports:
- "8000:8000"
links:
- db
volumes:
- .:/code
db:
image: orchardup/mysql
environment:
MYSQL_DATABASE: wordpress
```
要让这个应用跑起来还需要两个文件。
第一个,`wp-condocker-compose.php` ,它是一个标准的 Wordpress 配置文件,有一点需要修改的是把数据库的配置指向 `db` 容器。
```
```php
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
@ -64,7 +68,7 @@ require_once(ABSPATH . 'wp-settings.php');
```
第二个,`router.php` ,它告诉 PHP 内置的服务器怎么运行 Wordpress:
```
```php
<?php
$root = $_SERVER['DOCUMENT_ROOT'];
@ -83,5 +87,4 @@ if(file_exists($root.$path))
}else include_once 'index.php';
```
这些配置文件就绪后,在你的 Wordpress 目录里面执行 `docker-compose up` 指令Compose 就会拉取镜像再创建我们所需要的镜像,然后启动 web 和数据库容器。 接着访问 docker 守护进程监听的 8000 端口就能看你的 Wordpress 网站了。(如果你有使用 boot2docker ,执行 `boot2docker ip` ,就会看到它的地址)。
这些配置文件就绪后,在你的 Wordpress 目录里面执行 `docker-compose up` 指令Compose 就会拉取镜像再创建我们所需要的镜像,然后启动 web 和数据库容器。 接着访问 docker 守护进程监听的 8000 端口就能看你的 Wordpress 网站了。