systemsdk / docker-symfony-api

v3.1.4 2024-09-08 16:59 UTC

README

运行带有JSON REST API示例的Symfony所需的Docker环境(基于官方php和mysql docker hub仓库)。

Actions Status CircleCI Coverage Status Latest Stable Version MIT licensed

源代码

要求

  • Docker Engine版本18.06或更高
  • Docker Compose版本1.22或更高
  • 编辑器或IDE
  • MySQL Workbench

注意:操作系统推荐 - 基于Linux Ubuntu。

组件

  1. Nginx 1.27
  2. PHP 8.3 fpm
  3. MySQL 8
  4. Symfony 7
  5. RabbitMQ 3
  6. Elasticsearch 7
  7. Kibana 7
  8. Redis 7
  9. Mailpit(仅用于开发环境上的调试邮件)

设置Docker Engine和Docker Compose

要安装Docker Engine与docker compose,请遵循页面Docker Engine上所述的步骤。

注意1:如果您使用的是Linux操作系统,请在以上步骤之后运行以下命令:sudo usermod -aG docker $USER

注意2:如果您使用的是MacOS 12.2或更高版本的Docker Desktop - 请启用virtiofs以提高性能(自Docker Desktop v4.22起默认启用)。

设置DEV环境

1.您可以从GitHub克隆此存储库或通过composer安装。

如果您已安装composer并希望通过composer安装环境,可以使用以下命令

composer create-project systemsdk/docker-symfony-api api-example-app

2.在.env.prod和.env.staging文件中为应用程序设置另一个APP_SECRET。

注意1:您可以从这里获取唯一的密钥。

注意2:不要在开发和测试环境中使用.env.local.php(如果存在,请删除它)。

注意3:如果您想更改默认的web端口/xdebug配置,可以创建.env.local文件并设置一些参数(参见.env文件)。

注意4:如果存在,请删除var/mysql-data文件夹。

3.将域名添加到本地'hosts'文件

127.0.0.1    localhost

4.配置/docker/dev/xdebug-main.ini(Linux/Windows)或/docker/dev/xdebug-osx.ini(MacOS)(可选)

  • 如果需要在浏览器中仅调试来自前端IDE KEY:PHPSTORM的请求
xdebug.start_with_request = no

在Firefox扩展程序中安装本地“Xdebug helper”并在设置中设置IDE KEY:PHPSTORM

  • 如果需要调试到API的任何请求(默认)
xdebug.start_with_request = yes

5.Elasticsearch已预先配置以下具有特权的bootstrap用户(您可以使用它进入Kibana)

user: elastic
password: changeme

注意:对于prod/staging环境应使用另一个密码。

6.在终端中构建、启动和安装docker镜像

make build
make start
make composer-install
make generate-jwt-keys

7.确保已安装迁移/创建了角色和组/消息传递传输/弹性模板

make migrate
make create-roles-groups
make migrate-cron-jobs
make messenger-setup-transports
make elastic-create-or-update-template

8.为了使用此应用程序,请在浏览器中打开以下URL

在本地设置STAGING环境

1.您可以从GitHub克隆此存储库或通过composer安装。

注意:如果存在,请删除var/mysql-data文件夹。

如果您已安装composer并希望通过composer安装环境,可以使用以下命令

composer create-project systemsdk/docker-symfony-api api-example-app

2.Elasticsearch已预先配置以下具有特权的bootstrap用户

user: elastic
password: changeme

3.在终端中构建、启动和安装docker镜像

make build-staging
make start-staging
make generate-jwt-keys

4.确保已安装迁移/创建了角色和组/消息传递传输/弹性模板

make migrate-no-test
make create-roles-groups
make migrate-cron-jobs
make messenger-setup-transports
make elastic-create-or-update-template

在本地设置PROD环境

1.您可以从GitHub克隆此存储库或通过composer安装。

如果您已安装composer并希望通过composer安装环境,可以使用以下命令

composer create-project systemsdk/docker-symfony-api api-example-app

2. 编辑 compose-prod.yaml 文件,并设置 MySQL 和 RabbitMQ 的用户/密码。

注意:如果存在,请删除var/mysql-data文件夹。

3. 编辑 env.prod 文件,并设置 MySQL 和 RabbitMQ 的用户/密码。

4. Elasticsearch 已预配置以下具有特权的引导用户

user: elastic
password: changeme

5. 从终端构建、启动和安装 docker 镜像

make build-prod
make start-prod
make generate-jwt-keys

6. 确保您已安装迁移/创建角色和组/消息传递传输/弹性模板

make migrate-no-test
make create-roles-groups
make migrate-cron-jobs
make messenger-setup-transports
make elastic-create-or-update-template

如何为 Elasticsearch 启用付费功能

将 Elasticsearch 的 xpack.license.self_generated.type 选项的值从 basic 切换到 trial (/docker/elasticsearch/config/elasticsearch.yml)。

获取容器 shell

应用程序启动后(make start),要获取 symfony 容器内的 shell 访问权限,可以运行以下命令

make ssh

注意 1:请使用以下 make 命令进入其他容器:make ssh-nginxmake ssh-supervisordmake ssh-mysqlmake ssh-rabbitmq

注意 2:请使用 exit 命令从容器的 shell 返回到本地 shell。

构建容器

如果您已编辑 Dockerfile 或其他环境配置,您需要使用以下命令重新构建容器

make down
make build
make start

注意:如果您需要构建测试/预发布/生产环境,请使用环境特定的命令,更多详细信息可以通过使用 make help 命令获取。

启动和停止环境容器

请使用以下 make 命令来启动和停止环境

make start
make stop

注意 1:对于预发布环境,需要使用以下 make 命令:make start-stagingmake stop-staging

注意 2:对于生产环境,需要使用以下 make 命令:make start-prodmake stop-prod

停止并删除环境容器和网络

请使用以下 make 命令来停止和删除环境容器和网络

make down

注意:如果您需要停止和删除测试/预发布/生产环境,请使用环境特定的命令,更多详细信息可以通过使用 make help 命令获取。

其他主要命令可用

make build
make build-test
make build-staging
make build-prod

make start
make start-test
make start-staging
make start-prod

make stop
make stop-test
make stop-staging
make stop-prod

make down
make down-test
make down-staging
make down-prod

make restart
make restart-test
make restart-staging
make restart-prod

make env-staging
make env-prod

make generate-jwt-keys

make ssh
make ssh-root
make fish
make ssh-nginx
make ssh-supervisord
make ssh-mysql
make ssh-rabbitmq
make ssh-elasticsearch
make ssh-kibana

make composer-install-no-dev
make composer-install
make composer-update

make info
make help

make logs
make logs-nginx
make logs-supervisord
make logs-mysql
make logs-rabbitmq
make logs-elasticsearch
make logs-kibana

make drop-migrate
make migrate
make migrate-no-test
make migrate-cron-jobs

make fixtures

make create-roles-groups

make messenger-setup-transports

make elastic-create-or-update-template

make phpunit
make report-code-coverage

make phpcs
make ecs
make ecs-fix
make phpmetrics
make phpcpd
make phpmd
make phpstan
make phpinsights

etc....

注意:请参阅 Makefile 中的更多命令

架构 & 软件包

外部链接 / 资源

指南

在您的项目上工作

  1. 对于新功能开发,将 develop 分支 fork 到新分支,格式为以下两种模式之一
    • feature/{ticketNo}
  2. 经常提交,并编写描述性的提交信息,以便在审查时更容易跟踪步骤。
  3. 将此分支推送到仓库,并创建一个拉取请求到 develop 以获取反馈,格式为 feature/{ticketNo} - "Jira 任务的简短描述性标题"。)
  4. 根据需要迭代。
  5. 请确保CircleCI(或如果您不使用CircleCI,则为另一个工具)上显示“所有检查均通过”,并且状态为绿色。
  6. 当PR被批准时,它将被压缩并合并到develop分支中,稍后合并到release/{编号}分支以进行部署。

注意:您可以在此处找到git flow详细示例。

许可证

MIT许可证(MIT)