manmath / dockerci
Docker Compose 结构,快速启动 CodeIgniter PHP 框架项目
This package is not auto-updated.
Last update: 2024-09-29 03:25:53 UTC
README
Docker Compose 结构,快速启动 CodeIgniter PHP 框架项目。
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 可以当前是 app、web、data 或 db。
在 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端口。
连接到正在运行的服务
运行bin/dockerci ps并复制您想要连接的容器的名称。
使用您刚刚复制的名称运行docker exec -it <containername> /bin/bash。这样,您可以在一个正在运行的容器中工作,而不是创建一个新的容器。
检查容器中的开放端口
bin/dockerci run SERVICE netstat --listen
