kfreiman/php-cli-docker-example

Symfony 控制台示例应用程序,使用 Docker 和 MySQL

dev-master 2018-11-28 18:41 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:28:48 UTC


README

这是使用 Symfony 控制台和 Docker 以及数据库(DBAL 没有ORM)的基本示例。只有一个 CountDomainsCommand,它遍历 users 表并统计使用每个电子邮件域的用户数量。

如何运行

通过 Docker Compose 运行数据库:docker-compose up -d。它将启动 MySQL 服务器,并将方案和数据放置在项目的 mysql-dump 目录中。

自基础启动以来,构建本应用的本地 Docker 镜像。

docker build -t kfreiman/php-cli-docker-example .

注意,在 Dockerfile 中使用了 多阶段构建 来最小化容器大小。

最后,您可以运行该应用程序。

docker run \
  --link=mysql_test_db:db \
  --network=custom_network \
  -e MYSQL_DATABASE=test_db \
  -e MYSQL_USER=test_user \
  -e MYSQL_PASSWORD=secret \
  -e batch=3 \
  kfreiman/php-cli-docker-example

要从应用程序容器访问数据库容器,您必须指定 --link 参数和来自 docker-compose.yml 的环境变量。参数 --network 是必需的,以便在 Docker Compose 的同一网络上运行容器。-e batch=3 定义了每个表查询迭代的批大小,默认为 1000

它将打印使用特定域的用户数量

5 domain1.com
4 domain4.com
2 domain2.com
1 domain3.com

可能的未来改进

  • 使用 entrypoint 来能够运行不同的命令
  • 在表很大且可能在命令执行期间发生更改的情况下,使用锁定表或 updated_at 标记
  • 实现测试
  • 在执行期间显示进度