# Yii 和 Docker ¶

对于开发和部署 Yii 应用程序可以使用 Docker 容器运行。容器就像一个轻量级的独立虚拟机，它将其服务映射到主机的端口，即在端口 80 上的容器中的Web服务器在您的（本地）主机上的端口 8888 上可用。

容器可以解决许多问题，例如在开发人员计算机和服务器上具有相同的软件版本，在开发时快速部署或模拟多服务器体系结构。

您可以在 docker.com 上阅读有关Docker容器的更多信息。

## 要求 ¶

- `docker`
- `docker-compose`

访问下载页面获取 Docker 工具。

## 安装 ¶

安装后，你应该可以运行 `docker ps` 并看到类似的输出：

    CONTAINER ID   IMAGE   COMMAND   CREATED   STATUS   PORTS

这意味着您的Docker守护进程已启动并正在运行。

另外运行 `docker-compose version`，你的输出应该是这样的

    docker-compose version 1.20.0, build unknown
    docker-py version: 3.1.3
    CPython version: 3.6.4
    OpenSSL version: OpenSSL 1.1.0g  2 Nov 2017

使用 Compose，您可以配置管理您的应用程序所需的所有服务，例如数据库和缓存。

## 资源 ¶

- 基于 PHP 的 Yii 镜像可以在这里找到 yii2-docker
- Docker 支持的 yii2-app-basic
- Docker 支持的 yii2-app-advanced 正在开发中

## 用法 ¶

Docker的基本命令是：

    docker-compose up -d

在后台启动堆栈中的所有服务

    docker-compose ps

列出正在运行的服务

    docker-compose logs -f

持续查看所有服务的日志

    docker-compose stop

优雅地停止堆栈中的所有服务

    docker-compose kill

立即停止堆栈中的所有服务

    docker-compose down -v

停止并删除所有服务，在不使用 host-volumes 时注意数据丢失

在容器中运行命令

    docker-compose run --rm php composer install

在新的容器中运行 composer 安装

    docker-compose exec php bash

在 运行中的 `php` 服务中执行 bash

## 高级主题 ¶

### Yii 框架测试 ¶

你可以按照这里描述的方式为 Yii 本身运行 dockerized 框架测试。

### 数据库管理工具 ¶

以 MySQL（`mysql`）的形式运行MySQL时，可以将 phpMyAdmin 容器添加到您的堆栈中，如下所示：

        phpmyadmin:
            image: phpmyadmin/phpmyadmin
            ports:
                - '8888:80'
            environment:
                - PMA_ARBITRARY=1
                - PMA_HOST=mysql
            depends_on:
                - mysql