systemsdk / docker-symfony-api
JSON REST API
Requires
- php: ^8.3.0
- ext-amqp: *
- ext-ctype: *
- ext-hash: *
- ext-iconv: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-pdo: *
- ext-pdo_mysql: *
- beberlei/doctrineextensions: ^1.5
- doctrine/doctrine-bundle: ^2.12
- doctrine/doctrine-migrations-bundle: ^3.3
- doctrine/orm: ^2.19
- dukecity/command-scheduler-bundle: ^6.0
- elasticsearch/elasticsearch: ^7.17
- gedmo/doctrine-extensions: ^3.16
- lexik/jwt-authentication-bundle: ^3.1
- mark-gerarts/automapper-plus-bundle: ^1.5
- matomo/device-detector: ^6.3
- matthiasnoback/symfony-console-form: ^6.0
- nelmio/api-doc-bundle: ^4.28
- nelmio/cors-bundle: ^2.5
- phpdocumentor/reflection-docblock: ^5.4
- ramsey/uuid-doctrine: ^2.1
- symfony/amqp-messenger: 7.1.*
- symfony/asset: 7.1.*
- symfony/config: 7.1.*
- symfony/console: 7.1.*
- symfony/doctrine-bridge: 7.1.*
- symfony/doctrine-messenger: 7.1.*
- symfony/dotenv: 7.1.*
- symfony/expression-language: 7.1.*
- symfony/flex: ^2.4
- symfony/form: 7.1.*
- symfony/framework-bundle: 7.1.*
- symfony/http-client: 7.1.*
- symfony/intl: 7.1.*
- symfony/mailer: 7.1.*
- symfony/messenger: 7.1.*
- symfony/mime: 7.1.*
- symfony/monolog-bundle: ^3.10
- symfony/notifier: 7.1.*
- symfony/process: 7.1.*
- symfony/property-access: 7.1.*
- symfony/property-info: 7.1.*
- symfony/proxy-manager-bridge: 6.4.*
- symfony/routing: 7.1.*
- symfony/runtime: 7.1.*
- symfony/security-bundle: 7.1.*
- symfony/serializer: 7.1.*
- symfony/string: 7.1.*
- symfony/translation: 7.1.*
- symfony/twig-bundle: 7.1.*
- symfony/validator: 7.1.*
- symfony/web-link: 7.1.*
- symfony/yaml: 7.1.*
- twig/extra-bundle: ^2.12|^3.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- doctrine/doctrine-fixtures-bundle: ^3.6
- roave/security-advisories: dev-latest
- symfony/browser-kit: 7.1.*
- symfony/debug-bundle: 7.1.*
- symfony/maker-bundle: ^1.60
- symfony/requirements-checker: ^2.0
- symfony/stopwatch: 7.1.*
- symfony/var-dumper: 7.1.*
- symfony/web-profiler-bundle: 7.1.*
- systemsdk/easy-log-bundle: 2.0.*
Conflicts
- symfony/debug: <3.3
- symfony/symfony: *
- symfony/twig-bundle: <3.3
This package is auto-updated.
Last update: 2024-09-08 17:08:55 UTC
README
运行带有JSON REST API示例的Symfony所需的Docker环境(基于官方php和mysql docker hub仓库)。
要求
- Docker Engine版本18.06或更高
- Docker Compose版本1.22或更高
- 编辑器或IDE
- MySQL Workbench
注意:操作系统推荐 - 基于Linux Ubuntu。
组件
- Nginx 1.27
- PHP 8.3 fpm
- MySQL 8
- Symfony 7
- RabbitMQ 3
- Elasticsearch 7
- Kibana 7
- Redis 7
- 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-nginx
,make ssh-supervisord
,make ssh-mysql
,make ssh-rabbitmq
。
注意 2:请使用 exit
命令从容器的 shell 返回到本地 shell。
构建容器
如果您已编辑 Dockerfile 或其他环境配置,您需要使用以下命令重新构建容器
make down make build make start
注意:如果您需要构建测试/预发布/生产环境,请使用环境特定的命令,更多详细信息可以通过使用 make help
命令获取。
启动和停止环境容器
请使用以下 make 命令来启动和停止环境
make start make stop
注意 1:对于预发布环境,需要使用以下 make 命令:make start-staging
,make stop-staging
。
注意 2:对于生产环境,需要使用以下 make 命令:make start-prod
,make 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 中的更多命令
架构 & 软件包
- Symfony 7
- doctrine-migrations-bundle
- doctrine-fixtures-bundle
- command-scheduler-bundle
- phpunit
- dama/doctrine-test-bundle
- phpunit-bridge
- browser-kit
- css-selector
- security-checker
- messenger
- composer-bin-plugin
- composer-normalize
- composer-unused
- composer-require-checker
- requirements-checker
- security-advisories
- jwt-authentication-bundle
- automapper-plus-bundle
- symfony-console-form
- api-doc-bundle
- cors-bundle
- device-detector
- uuid-doctrine
- doctrine-extensions
- easy-log-bundle
- php-coveralls
- easy-coding-standard
- PhpMetrics
- phpcpd
- phpmd
- phpstan
- phpinsights
- beberlei/doctrineextensions
- elasticsearch
- rector
外部链接 / 资源
- Symfony Flex REST API:从 Symfony Flex REST API 分支 "src/" 中克隆的代码。
指南
在您的项目上工作
- 对于新功能开发,将
develop
分支 fork 到新分支,格式为以下两种模式之一feature/{ticketNo}
- 经常提交,并编写描述性的提交信息,以便在审查时更容易跟踪步骤。
- 将此分支推送到仓库,并创建一个拉取请求到
develop
以获取反馈,格式为feature/{ticketNo}
- "Jira 任务的简短描述性标题"。) - 根据需要迭代。
- 请确保CircleCI(或如果您不使用CircleCI,则为另一个工具)上显示“所有检查均通过”,并且状态为绿色。
- 当PR被批准时,它将被压缩并合并到
develop
分支中,稍后合并到release/{编号}
分支以进行部署。
注意:您可以在此处找到git flow详细示例。