我自己搭建的dnmp环境。我觉得比较简单。另外还请大家多多指教,不断改进!https://github.com/839891627/...1.后台docker是什么,为什么要用,这里不再赘述。在这里和大家分享一下我搭建的php开发环境。这个存储库尽可能遵循“精益原则”。尽可能减少定制,把定制的工作交给用户。授人以鱼不如授人以渔。希望通过简单的例子,给大家发挥的空间。毕竟每个人的需求都不一样。做一些大而全面的东西,但它臃肿且难以理解。2.亮点嗯,自以为是的亮点就是简单的辅助脚本优化:脚本加速和其他组织:脚本的分组等等你说的...3.功能说明1.目录结构说明.├──.env#环境变量的定义。这里可以定义需要的php/nginx/msyql版本和端口号├──Dockerfile#php镜像构建脚本。主要是安装一些扩展和nodejs,python├──config│├──nginx#前端需要的nginx配置文件夹。新项目的配置文件可以在这里添加nginx配置│├──php#这里是php.ini。在里面我调整了session.save_handler=redis和session.save_path="tcp://redis:6379"。表示使用redis(容器)存储session│└──redis.conf#redis配置文件├──data#持久化数据库目录│├──composer│├──mysql│└──redis├──docker-compose.yml├──logs#存储nginx日志│└──nginx└──resources#预先准备好的资源├──Python-3.8.0.tgz├──mcrypt-1.0.3.tgz├──mongodb-1.6.0.tgz├──node-v12.13.0-linux-x64.tar.xz├──redis-5.1.1.tgz├──sources.list├──swoole-src-4.4.12.zip└──xdebug-2.8.0.tgz2。集成服务mysqlphp7.2/7.3nginxredis3.使用前,强烈建议熟悉docker-compose.yml和Dockerfile。内容很少,clone这个项目到你的其他开发项目的平面目录├──laravel#例如这里有一个laravel项目├──dnmp#然后,你需要在这里clone这个项目来启动/创建一个容器环境然后切换到dnmp目录下执行docker-composeup-d#如果你使用我下面给出的zshrc的别名,你可以通过dup-d添加相应的nginx配置文件。参考config/nginx/conf.d/laravel.conf。如果调整过nginx配置,在dnmp目录下执行(重启nginx容器)docker-composerestartnginx(使用别名,执行drnginx)访问配置主机为项目hosts,指定域名127.0.0.1laravel.test项目中使用mysql/redis时,需要配置为容器名。比如laravel/env.php中的REDIS_HOST=redis#填写redis,运行时容器会自动解析。因为dockerps查看,得知redis容器名为“redis”#REDIS_HOST=127.0.0.1#而不是填写ipREDIS_PASSWORD=nullREDIS_PORT=6379DB_CONNECTION=mysqlDB_HOST=mysql#同样填写mysql#DB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=homesteadDB_USERNAME=homesteadDB_PASSWORD=secret[可选]这样每个项目都要配置host,比较麻烦,可以通过dnsmasq实现一劳永逸的目录。可以参考后面的附录4,其他切换php版本的函数,在docker-compose.yml中打开php73部分,然后在nginx.conf中docker-composeup-dphp73,fastcgi_passphp73:9000;可以安装扩展docker-php-ext-install-h查看可以安装的扩展docker-php-ext-enable-h启用扩展如果需要的扩展没有,可以通过源码包自行安装。这里不解释,执行php、composer等脚本需要进入容器执行dockerexec-itphp72bash,然后切换到对应的项目执行php72是容器名,定义在container_name:docker-compose.yml中的php72。如果设置了别名,命令可以直接在宿主项目下运行,无需进入容器。复制到你对应的配置中,.test域名统一设置为local>mac。Linux,请尝试brewinstalldnsmasq/usr/local/etc/dnsmasq.conf配置address=/.test/127.0.0.1创建一个dns解析器:sudomkdir-v/etc/resolversudobash-c'echo"nameserver127.0.0.1">/etc/resolver/test'xdeug使用>安装了3.x版。默认端口号是**9003**>phpstorm配置可以参考我这里的视频:https://www.bilibili.com/video/BV1J64y1u7dw#reply2806426126(视频里的端口号是9001,当前项目应该是9003)>`config/php/php72.ini`>我已经在configuration里配置好了,打开debug和profile(如果不需要,直接删除)GET/POST/COOKIE添加参数'XDEBUG_TRIGGER=anyvalue'关于A项目在容器中的curl访问B项目的不同解决方案1.解决方案1目前通过修改php容器中的/etc/hosts解决dockerinspect-f'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'nginx#首先获取nginx容器ipdockerexec-itphpbash#进入php容器echo'第一步返回的IP域.test'>>/etc/hosts1.看docker-compose.ymlextra_hostsforsolution2:-laravel.test:172.20.128.2#这个ip是nginx容器ip,已经设置为fixed。这样就不会出现每次重启都改变ip的问题
