架构设计
服务器:Ubuntu 20 x64
Mysql: 8.0
PHP: 8.1
Symfony: 6.1
Docker 中部署 Symfony+Caddy, apt 安装数据库,方便数据库升级为独立的数据库服务器。
安装
下载最新版 Symfony Docker 环境到本地,下载地址:https://github.com/dunglas/symfony-docker
集成环境包含了 PHP、Web 服务器、数据库,使用前需要关闭或删除不需要的设置。
修改 docker-compose.yml 配置
找到数据库配置,关闭或删除代码
###> doctrine/doctrine-bundle ###
# database:
# image: postgres:${POSTGRES_VERSION:-13}-alpine
# environment:
# POSTGRES_DB: ${POSTGRES_DB:-app}
# # You should definitely change the password in production
# POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ChangeMe}
# POSTGRES_USER: ${POSTGRES_USER:-symfony}
# # 这个表示允许所有ip访问
# ALLOW_IP_RANGE: 0.0.0.0/0
# volumes:
# - db-data:/var/lib/postgresql/data:rw
# You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/db/data:/var/lib/postgresql/data:rw
###< doctrine/doctrine-bundle ###
修改数据库连接参数
DATABASE_URL: mysql://user:password@127.0.0.1:3306/symfony61
# DATABASE_URL: postgresql://${POSTGRES_USER:-symfony}:${POSTGRES_PASSWORD:-ChangeMe}@database:5432/${POSTGRES_DB:-app}?serverVersion=${POSTGRES_VERSION:-13}
创建新的Symfony应用
SYMFONY_VERSION=6.1.* SERVER_NAME=symfony.localhost HTTP_PORT=9010 HTTPS_PORT=9011 HTTP3_PORT=9011 docker-compose -f docker-compose.yml up --build
浏览器打开:https://symfony.localhost:9011/ 显示调试界面安装成功
包安装
cd /project
#查看运行的Container
docker ps -l
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#917e3eec0e5c symfonybi_caddy "caddy run --config …" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:443->443/udp, 2019/tcp symfonybi-caddy-1
#进入容器
docker exec -it symfonybi-caddy-1 /bin/sh
#/srv/app #
注释路由
Symfony 默认在 YAML 中定义路由,安装 annotations 使用注释或属性定义路由。
composer require annotations
使用方法
// src/Controller/TestController.php
use Symfony\Component\Routing\Annotation\Route;
class TestController
{
/**
* @Route("/test/index")
*/
public function index(): Response
{
//..
}
}
调试工具
php bin/console debug:router
#搜索
php bin/console debug:router |grep /test/index
[1]Symfony.官方文档[DB/OL]https://symfony.com/doc/6.1/setup.html