# dokcer-composer **Repository Path**: goodlucks/dokcer-composer ## Basic Information - **Project Name**: dokcer-composer - **Description**: 用来docker来生成php开发环境 - **Primary Language**: Docker - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-08-05 - **Last Updated**: 2022-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 启动方式 ``` docker-compose up -d docker-compose start docker-compose stop ### 删除生成的容器 docker-compose down ``` ## 服务概况 * 本包将运行环境拆分为nginx+php+mysql+redis 1. nginx:1.18 2. php:7.4 3. mysql:8 4. redis:6.0 5. php:8.0.8 * php容器使用alpine版本:[8.0.8-fpm-alpine](https://github.com/docker-library/php/blob/c8c4d223a052220527c6d6f152b89587be0f5a7c/7.4/alpine3.12/fpm/Dockerfile) * 如果想使用低版本的php,可以通过修改 [Dockerfile](/lnmp/Dockerfile) 第一行引入的php源,以下是相同环境版本,替换掉 `php:` 后面的版本即可 1. [7.3-fpm-alpine](https://github.com/docker-library/php/blob/098e442542e8a10bdee2c22484a98d41583a8fb9/7.3/alpine3.12/fpm/Dockerfile) 2. [7.2-fpm-alpine](https://github.com/docker-library/php/blob/8663909bd06cb1695dcdbbff21c4d393afb30557/7.2/alpine3.12/fpm/Dockerfile) * 经测试,php72安装gd库的编译方式跟php74的不一样,已将兼容方式注释在dockerfile * 已追加PHP8的容器, 基本跟PHP74容器一致,有些扩展装不上已注释掉 * 如果想测试PHP8,可在nginx配置中将原来指向fpm的端口改为fpm-8的端口 ## 关于配置 ### 想要自定义环境的部分配置,需要先将 [.env.local](./.env.local) 复制为.env 目录里面的.env用于配置,也可以注释env转而使用环境变量或者默认值 1. env里面定义了挂载目录、容器前缀、端口前缀、数据库密码、容器工作目录 2. 修改env后需要先运行docker-compose down再运行docker-compose up ### [default.conf](./default.conf) 是一个供参考的nginx配置 ## 关于部署环境 * 第一次启动后,会挂载出 nginx 的相关目录,php代码目录在挂载目录下的www路径 * 在 [.env.local](./.env.local) 中配置容器前缀跟端口前缀, 可以在部署多个环境时避免冲突 * php容器和nginx容器都挂载了同一个目录且相对目录一致, 可以在 env 中指定 `LOCAL_DIR` 来设置本地映射目录 * 在 nginx 的 vhost 配置中,需要使用 `fastcgi_pass "fpm容器名":"fpm端口";` 来访问php的容器(),使用内网访问 ## 目录结构 ``` ├── mysql // 数据库挂载目录 │ ├── mysql // 每个子目录都是一个数据库 │ ├── performance_schema │ └── test ├── nginx // Nginx配置目录 │ ├── cert // 证书存放处 │ ├── conf // 配置存放处 │ └── log // 日志存放处 └── www // Fpm工作目录 代码放这里 ``` ## 关于数据库 * 如果想使用mysql而不是mariadb, 可以直接在[docker-compose.yml](./docker-compose.yml)修改db服务的镜像, 指定为mysql:版本号