manmath/dockerci

Docker Compose 结构,快速启动 CodeIgniter PHP 框架项目

安装: 23

依赖: 0

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 1

开放问题: 0

语言:Shell

1.0.2 2017-07-13 08:39 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:25:53 UTC


README

Docker Compose 结构,快速启动 CodeIgniter PHP 框架项目。

MicroBadger Docker Image Stable Release Changelog CodeIgniter DockerCI MIT License

DockerCI 创建必要的 Docker 容器(web 服务器、数据库、PHP、邮件)以运行您的 CodeIgniter 框架项目。该包提供了一个在 bin/dockerci 中的包装脚本,它简化了 Docker 的处理,并完成了所有必要的配置。

我们创建此包是为了使 CodeIgniter 框架项目的开发更加容易,并创建一个简单且可重用的包,该包易于维护,并适用于标准项目。

由于该包已在几个项目中重复使用,因此将继续进行开发。欢迎贡献和反馈。

安装 docker

https://docs.dockerd.com.cn/installation/ (tested with docker v1.9 - v17.03)

安装 docker-compose

我们使用 docker-compose 来进行所有自动配置

https://docs.dockerd.com.cn/compose/install/ (tested with docker-compose v1.5 - v1.11.2)

存储库包含一个 Dockerfile,它将在每次更改后自动在 docker hub 中构建,并由 docker-compose 用于构建必要的容器。

在 Mac 或 Windows 上

已经测试了与 docker for Mac 一起工作,但尚未与 docker for Windows 一起工作。您可以随时尝试它,并告诉我们您是否无法等待。

将 dockerci 安装到您的发行版中

在您的 composer 中将 manmath/dockerci 添加为开发依赖项,强烈推荐使用最新稳定版本。

示例:

composer require --dev manmath/dockerci 1.0.*

运行 dockerci

bin/dockerci up -d

该命令将回显您可以使用的 URL 来访问项目。将主机名添加到 /etc/hosts,并将 IP 设置为您的 Docker 主机(Linux 的默认值是 0.0.0.0)或 boot2docker IP。您还可以使用任何子域名,例如 *.hostname,它将指向同一服务器。您需要做的是将确切的子域名添加到 /etc/hosts

使用 -d 参数将在后台运行,直到您运行

bin/dockerci stop

默认数据库配置为您的 database.php

$db['default'] = array(
    'hostname' => 'db',
    'username' => 'root',
    'password' => 'root',
    'database' => 'dockerci'
);

请注意,还有一个名为 dockerci_test 的第二个数据库,可用于测试环境。测试环境 URL 为 test.hostname,此主机名也应添加到您的 /etc/hosts

检查状态

bin/dockerci ps

这将显示正在运行的容器。data 容器可能处于非活动状态以执行其工作。

技巧与窍门

使用不同的 CI_ENV

CI_ENV=production bin/dockerci up -d

DockerCI 还根据您正在运行的当前上下文设置了一个子上下文进行测试。在上面的示例中,它将是 production/testing。无论如何,您只能使用带有 bin/dockerci 命令的父上下文。因此,当需要执行测试上下文中的命令时,您需要首先进入 app 容器,然后通过在命令前添加上下文变量来调用命令。

CI_ENV=production bin/dockerci up -d
bin/dockerci run app /bin/bash

使用 MailHog 进行邮件测试

smtp_host = 'mail'
smtp_port = '1025'

然后在浏览器中打开 MyCIProject:8025(使用您自己的主机名)以查看您的邮件。

从您的 CodeIgniter 应用程序发送电子邮件,享受乐趣。

在服务容器中运行 shell

bin/dockerci run SERVICE /bin/bash

SERVICE 可以当前是 appwebdatadb

app 容器内访问项目 URL

截至目前,Docker 不支持双向链接,因此您无法从 app 容器访问 web 容器。但在某些情况下,您可能需要这种连接。例如,在没有 selenium 的 behat 测试中,您需要在 testing 上下文中运行测试时,需要在 app 容器内执行。

DockerCI启动所有容器后,会添加额外的脚本以获取Web容器的IP地址,并将其追加到app容器内的/etc/hosts文件中,如下所示

WEB_CONTAINER_IP    project-url
WEB_CONTAINER_IP    test.project-url

从Docker主机访问容器内的数据库

虽然您可以通过运行bin/dockerci run db /bin/bash轻松登录到db容器的shell中并执行mysql命令,但在某些情况下,您可能希望直接从主机运行mysql命令而不必首先登录到db容器。其中一个最佳用例,例如,是从MySQL Workbench工具访问容器内的数据库。为了能够做到这一点,我们已经将容器内的数据库端口(即3306)映射到您的主机机器上的3307端口。

Screenshot of MySQL Workbench interface

连接到正在运行的服务

运行bin/dockerci ps并复制您想要连接的容器的名称。

使用您刚刚复制的名称运行docker exec -it <containername> /bin/bash。这样,您可以在一个正在运行的容器中工作,而不是创建一个新的容器。

检查容器中的开放端口

bin/dockerci run SERVICE netstat --listen

进一步阅读