lombax85/phpdocker

该软件包的最新版本(0.1.1)没有可用的许可证信息。

0.1.1 2016-11-20 18:35 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:03:40 UTC


README

项目描述

使用Docker和Composer的力量,在几分钟内让您的PHP/MySQL项目上线!只需几个命令,您就可以拥有开发、预发布和生产的基础设施,充分利用Docker容器。在这个项目中,您将找到以下依赖项的容器

  • apache
  • php-fpm
  • mysql
  • mongodb
  • couchdb

此外,数据库数据和会话由一个特定的容器管理,并提供最后一个容器作为工作区(您可以使用它来运行CLI命令的特殊容器)。
感谢Composer,此项目可以轻松集成和封装到您现有的Web应用中,允许您在开发机器、预发布服务器和生产服务器上更快地部署。

要求

  • docker-compose,最低版本1.8
  • docker,最低版本1.10
  • composer
  • php,最低版本5.6

通过Composer快速安装

  • 运行以下命令安装phpdocker
composer global require lombax85/phpdocker
  • 如果您想更新它,请运行
composer global update lombax85/phpdocker

此命令将为您的用户全局安装phpdocker。

NOTE: Be sure to add your composer bin directory to your PATH variable. 
On OSX and Linux, this is usually in $HOME/.composer/vendor/bin

现在,进入您的项目根目录,并键入

phpdocker dockerize

运行此命令将在您的项目根目录中创建一个docker目录,您就差不多可以开始了。

重要信息

  • 当您第一次启动容器时,将出现一个docker_data目录。建议将/docker_data添加到您的.gitignore文件中,但请仔细阅读数据目录部分。
  • docker目录中,您将找到所有您的Docker基础设施配置和一个名为.env的文件。该.env文件已预配置,包含您的Docker配置;有关更多信息,请参阅Docker .env文件部分。

Docker .env文件

  • 配置(要绑定的端口、在容器中启用的模块)存储在docker目录中的名为.env的文件中。在此文件中,您可以启用或禁用特定选项和模块,例如,您可以切换到PHP 7或PHP 5.6,或设置MySQL的默认密码。

数据目录

./docker_data目录包含所有数据库和会话数据。如果您在生产环境中使用此配置,请勿忘记使用适当的工具备份所有数据(例如:使用mysqldump对mysql)。
./docker_data目录通过目录绑定在容器之间共享,并在容器重建之间保持。
因此,当你重建 - 例如 - 你的mysql容器时,数据不会丢失。然而,请注意,如果你将mysql引擎更改为与数据目录内容不兼容的某些引擎,内容本身可能会损坏。

默认情况下,数据目录配置为在./docker_data内部。

当您第一次启动容器时,将创建此目录。如果您想更改docker_data目录的默认路径,请查看.env文件。

启动

  • 进入docker目录(cd docker
  • 执行以下命令(如果您不需要特定的引擎,在“up”命令中省略它)
docker-compose build apache2 mysql workspace mongo php-fpm couchdb
docker-compose up -d apache2 mysql mongo couchdb
  • 执行这些命令后,您的容器将启动并运行,使用docker ps查看它们
  • 现在做一些安装后的事情
    • MongoDB:与MySQL不同,MongoDB不允许在安装前设置默认用户名和密码。因此,您必须使用运行后脚本设置它们。要设置mongodb的默认用户和密码,请输入
     docker-compose exec mongo sh /mongo.sh user password
    

与项目交互

“工作区”容器应用于所有cli命令(composer install/update,artisan)

docker-compose exec workspace bash

将在www目录内提供shell。如果您愿意,可以直接发送命令而不使用shell。例如,要发送“php artisan migrate”,只需这样做

docker-compose exec workspace php artisan migrate

主机名

Docker为同一项目的所有容器创建一个虚拟私有和隔离的网络(它使用根目录名作为前缀)。
要从另一个容器访问一个容器(例如,从php-fpm访问mysql容器),只需使用主机名即可。主机名是docker-compose.tml文件中容器名称。
不要使用私有IP,因为它可能会随时更改。

因此,当您需要在Web应用的配置文件中配置mysql服务器主机名时,只需输入“mysql”

MYSQL_HOST=mysql

如果您进入容器,您会看到

root@7aa4b96361fb:/var/www# ping mysql
PING mysql (172.19.0.4) 56(84) bytes of data.
64 bytes from mongo_mysql_1.mongo_default (172.19.0.4): icmp_seq=1 ttl=64 time=0.148 ms

在此项目中,这些容器/主机名存在

workspace mysql php-fpm apache2 mongo couchdb

附加设置和故障排除

  • 在mac上:如果项目的根文件夹尚未共享,请启用./docker_data./docker文件夹的文件共享。
  • 如果您想查看Apache/MySQL的错误日志,您可以从docker-compose up命令中省略-d开关。这样做将显示容器的stdout。最终命令将是:docker-compose up apache2 mysql mongo couchdb

实际问题

  • 如果在第一次容器启动期间在“docker-compose up”期间停止(按Ctrl+C),则/docker/data的内容可能会损坏或未正确初始化。在这种情况下,例如,您将无法连接到MySQL。要解决
docker-compose stop
rm -Rf ./docker/data/mysql/*

注意:如果清除MongoDB数据,别忘了重新添加默认用户