# php 开发

基于 docker ,快速切换 php 版本开发环境,如,项目需要在 php7.4 环境下开发,可以使用以下方式:

```bash

chmod -R 777 .
docker run --rm -it -v $(pwd):/var/www/html -p 9000:80 php:8.3.6-apache
docker run --rm -it -v $(pwd):/var/www/html -p 9000:80 php:8.1.8-apache

docker run --rm -it -v $(pwd):/var/www/html -p 9000:80 php:7.4.27-apache

docker run --rm -it -v $(pwd):/var/www/html -p 9000:80 php:5.6.38-apache

```

开发环境需要 composer,启动下面容器即可:
```bash
#php8+xdebug+composer
docker run --rm -it -v $(pwd):/var/www/html -p 8000:8000 sineverba/php8xc:1.18.0 /bin/bash

```

laravel 项目使用下面容器,可以添加 `docker-compose.yaml` 配置一并启动数据库:
```
# https://hub.docker.com/r/bitnami/laravel
docker run --rm -it -v $(pwd):/app -p 8000:8000 bitnami/laravel:latest


docker run -d --name laravel \
  -p 8000:8000 \
  --env DB_HOST=mariadb \
  --env DB_PORT=3306 \
  --env DB_USERNAME=bn_myapp \
  --env DB_DATABASE=bitnami_myapp \
  --network laravel-network \
  --volume ${PWD}/my-project:/app \
  bitnami/laravel:latest

```

php 命令行项目工具:
```
docker run --rm -it -v $(pwd):/var/www/html -v $(pwd)/Downloads:/root/Downloads/MusicDL/ -p 9000:80 php:8.1.8-apache /bin/bash

docker run --rm -it -v /workspace:/app php:7.4 /bin/bash

thinkphp new demo
thinkphp serve
```

- -v /workspace:/app 挂载本地目录到容器内,/workspace 为本地目录,/app 为容器内目录

### 额外配置

- 安装 composer

```bash
docker run --rm -it -v /workspace:/app composer:latest /bin/bash
```

### 数据库

基于 docker-compose,启动 mysql, adminer, redis等等

```bash
docker-compose up -d
```

参考 template 代码即可

### 基于 swoole

```bash
docker run --rm -it -v /workspace:/app swoole:latest /bin/bash
```

### 基于 laravel

```bash
docker run --rm -it -v /workspace:/app composer:latest /bin/bash

composer create-project --prefer-dist laravel/laravel blog
```

### 基于 thinkphp

```bash

docker run --rm -it -v /workspace:/app composer:latest /bin/bash

composer create-project topthink/think demo
```

### 基于 yii

```bash

docker run --rm -it -v /workspace:/app composer:latest /bin/bash

composer create-project --prefer-dist yiisoft/yii2-app-basic demo
```

## 数据库

通过docker快速启动一个测试数据库:

```

```