diff options
| author | Kapil Viren Ahuja <k.v.ahuja@gmail.com> | 2017-02-10 14:54:24 +0530 |
|---|---|---|
| committer | Kapil Viren Ahuja <k.v.ahuja@gmail.com> | 2017-02-10 14:54:24 +0530 |
| commit | 93e44e57fbbb86df7a03c6d9ecfa751fb22342a1 (patch) | |
| tree | 526824b4f6571519bb55c8a8c090fee90e2aeab0 | |
| parent | 69868a6899c09e13da52a2675349ccbab2858995 (diff) | |
| download | vaindock-93e44e57fbbb86df7a03c6d9ecfa751fb22342a1.tar.gz vaindock-93e44e57fbbb86df7a03c6d9ecfa751fb22342a1.zip | |
works for:
- vainsocial.com
- pg for web
- pg for raw
- pgAdmin
35 files changed, 2443 insertions, 3 deletions
diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..87ac011 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*] +charset = utf-8 + +[{Dockerfile,docker-compose.yml}] +indent_style = space +indent_size = 4 @@ -0,0 +1 @@ +COMPOSE_CONVERT_WINDOWS_PATHS=1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b31986 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea +/logs +/data + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..301ee05 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,5 @@ +# Contributing to VainDock + +This is a stripped down version of [Laradock](https://github/laradock/laradock) and has been tailored for VainSocial's development. + + @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2016 <Mahmoud Zalt> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.
\ No newline at end of file diff --git a/README-zh.md b/README-zh.md new file mode 100644 index 0000000..0ea0c0e --- /dev/null +++ b/README-zh.md @@ -0,0 +1,966 @@ +# LaraDock + +[](http://zalt.me) + +[](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +LaraDock能够帮你在**Docker**上快速搭建**Laravel**应用。 +<br> +就像Laravel Homestead一样,但是Docker替换了Vagrant。 +> 先在使用 LaraDock,然后再学习它们。 + +<br> +## 目录 + +- [Intro](#Intro) + - [Features](#features) + - [Supported Software's](#Supported-Containers) + - [What is Docker](#what-is-docker) + - [What is Laravel](#what-is-laravel) + - [Why Docker not Vagrant](#why-docker-not-vagrant) + - [LaraDock VS Homestead](#laradock-vs-homestead) +- [Demo Video](#Demo) +- [Requirements](#Requirements) +- [Installation](#Installation) +- [Usage](#Usage) +- [Documentation](#Documentation) + - [Docker](#Docker) + - [List current running Containers](#List-current-running-Containers) + - [Close all running Containers](#Close-all-running-Containers) + - [Delete all existing Containers](#Delete-all-existing-Containers) + - [Enter a Container (SSH into a running Container)](#Enter-Container) + - [Edit default container configuration](#Edit-Container) + - [Edit a Docker Image](#Edit-a-Docker-Image) + - [Build/Re-build Containers](#Build-Re-build-Containers) + - [Add more Software's (Docker Images)](#Add-Docker-Images) + - [View the Log files](#View-the-Log-files) + - [Laravel](#Laravel): + - [Install Laravel from a Docker Container](#Install-Laravel) + - [Run Artisan Commands](#Run-Artisan-Commands) + - [Use Redis](#Use-Redis) + - [Use Mongo](#Use-Mongo) + - [PHP](#PHP) + - [Install PHP Extensions](#Install-PHP-Extensions) + - [Change the PHP-FPM Version](#Change-the-PHP-FPM-Version) + - [Change the PHP-CLI Version](#Change-the-PHP-CLI-Version) + - [Install xDebug](#Install-xDebug) + - [Misc](#Misc) + - [Use custom Domain](#Use-custom-Domain) + - [Enable Global Composer Build Install](#Enable-Global-Composer-Build-Install) + - [Install Prestissimo](#Install-Prestissimo) + - [Install Node + NVM](#Install-Node) + - [Debugging](#debugging) + - [Upgrading LaraDock](#upgrading-laradock) +- [Help & Questions](#Help) + + + +<a name="Intro"></a> +## 介绍 +LaraDock努力简化创建开发环境过程。 +它包含预包装Docker镜像,提供你一个美妙的开发环境而不需要安装PHP,NGINX,MySQL和其他任何软件在你本地机器上。 + +**使用概览:** + + +让我们了解使用它安装`NGINX`, `PHP`, `Composer`, `MySQL` 和 `Redis`,然后运行`Laravel` + +1. 将LaraDock放到你的Laravel项目中: +<br> +`git clone https://github.com/LaraDock/laradock.git`. +2. 进入LaraDock目录,然后运行这些容器。 +<br> +`docker-compose up -d nginx mysql redis` +3. 打开你的`.env`文件,然后设置`mysql`的`DB_HOST` 和 `redis`的`REDIS_HOST`。 +4. 打开浏览器,访问localhost: + + +<a name="features"></a> +### 特点 + +- 在PHP版本:7.0,5.6.5.5...之中可以简单切换。 +- 可选择你最喜欢的数据库引擎,比如:MySQL, Postgres, MariaDB... +- 可运行自己的软件组合,比如:Memcached, HHVM, Beanstalkd... +- 所有软件运行在不同的容器之中,比如:PHP-FPM, NGINX, PHP-CLI... +- 通过简单的编写`dockerfile`容易定制任何容器。 +- 所有镜像继承自一个官方基础镜像(Trusted base Images) +- 可预配置Laravel的Nginx环境 +- 容易应用容器中的配置 +- 干净的结构化的Docker配置文件(`dockerfile`) +- 最新的Docker Compose 版本(`docker-compose`) +- 所有的都是可视化和可编辑的 +- 快速的镜像构建 +- 每周都会有更新... + +<a name="Supported-Containers"></a> +### 支持的软件 (容器) + +- **数据库引擎:** + - MySQL + - PostgreSQL + - MariaDB + - MongoDB + - Neo4j +- **缓存引擎:** + - Redis + - Memcached +- **PHP 服务器:** + - NGINX + - Apache2 + - Caddy +- **PHP 编译工具:** + - PHP-FPM + - HHVM +- **消息队列系统:** + - Beanstalkd (+ Beanstalkd Console) +- **工具:** + - Workspace (PHP7-CLI, Composer, Git, Node, Gulp, SQLite, Vim, Nano, cURL...) +>如果你找不到你需要的软件,构建它然后把它添加到这个列表。你的贡献是受欢迎的。 + +<a name="what-is-docker"></a> +### Docker是什么? + +[Docker](https://www.docker.com) 是一个开源项目,自动化部署应用程序软件的容器,在Linux, Mac OS and Windows提供一个额外的抽象层和自动化的[操作系统级的虚拟化](https://en.wikipedia.org/wiki/Operating-system-level_virtualization) + +<a name="what-is-laravel"></a> +### Laravel是什么? + +额,这很认真的!!! + + +<a name="why-docker-not-vagrant"></a> +### 为什么使用Docker而不是Vagrant!? + +[Vagrant](https://www.vagrantup.com)构建虚拟机需要几分钟然而Docker构建虚拟容器只需要几秒钟。 +而不是提供一个完整的虚拟机,就像你用Vagrant,Docker为您提供**轻量级**虚拟容器,共享相同的内核和允许安全执行独立的进程。 + +除了速度,Docker提供大量的Vagrant无法实现的功能。 + +最重要的是Docker可以运行在开发和生产(相同环境无处不在)。Vagrant是专为开发,(所以在生产环境你必须每一次重建您的服务器)。 + +<a name="laradock-vs-homestead"></a> +### LaraDock Homestead 对比 + +LaraDock and [Homestead](https://laravel.com/docs/master/homestead) 给你一个完整的虚拟开发环境。(不需要安装和配置软件在你自己的每一个操作系统)。 + +Homestead 是一个工具,为你控制虚拟机(使用Homestead特殊命令)。Vagrant可以管理你的管理虚容器。 + +运行一个虚拟容器比运行一整个虚拟机快多了**LaraDock 比 Homestead快多了** + + + +<a name="Demo"></a> +## 演示视频 +还有什么比**演示视频**好: + +- LaraDock v4.0 (即将到来的...) +- LaraDock [v2.2](https://www.youtube.com/watch?v=-DamFMczwDA) +- LaraDock [v0.3](https://www.youtube.com/watch?v=jGkyO6Is_aI) +- LaraDock [v0.1](https://www.youtube.com/watch?v=3YQsHe6oF80) + + + +<a name="Requirements"></a> +## 依赖 + +- [Git](https://git-scm.com/downloads) +- [Docker](https://www.docker.com/products/docker/) + + + +<a name="Installation"></a> +## 安装 + + +1 - 克隆 `LaraDock` 仓库: + +**A)** 如果你已经有一个Laravel项目,克隆这个仓库在到`Laravel`根目录 + +```bash +git submodule add https://github.com/LaraDock/laradock.git +``` +>如果你不是使用Git管理Laravel项目,您可以使用 `git clone` 而不是`git submodule`。 + + +**B)** 如果你没有一个Laravel项目,你想Docker安装Laravel,克隆这个源在您的机器任何地方上: + +```bash +git clone https://github.com/LaraDock/laradock.git +``` + + + +<a name="Usage"></a> +## 使用 + + +**请在开始之前阅读:** +如果你正在使用**Docker Toolbox** (VM),选择以下任何一个方法: +- 更新到Docker [Native](https://www.docker.com/products/docker) Mac/Windows版本 (建议). 查看 [Upgrading Laradock](#upgrading-laradock) +- 使用 LaraDock v3.* (访问 `LaraDock-ToolBox` [分支](https://github.com/LaraDock/laradock/tree/LaraDock-ToolBox)). +如果您使用的是**Docker Native**(Mac / Windows版本)甚至是Linux版本,通常可以继续阅读这个文档,LaraDock v4以上版本将仅支持**Docker Native**。 + +<br> +<br> +1 - 运行容器: *(在运行`docker-compose`命令之前,确认你在 `laradock` 目录中* + + + +**例子:** 运行 NGINX 和 MySQL: + +```bash +docker-compose up -d nginx mysql +``` +你可以从以下列表选择你自己的容器组合: + + +`nginx`, `hhvm`, `php-fpm`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `apache2`, `caddy`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`. + + +**说明**: `workspace` 和 `php-fpm` 将运行在大部分实例中, 所以不需要在 `up` 命令中加上它们. + + + +<br> +2 - 进入 Workspace 容器, 执行像 (Artisan, Composer, PHPUnit, Gulp, ...)等命令 + +```bash +docker-compose exec workspace bash +``` +<br /> +增加 `--user=laradock` (例如 `docker-compose exec --user=laradock workspace bash`) 作为您的主机的用户创建的文件. (你可以从 `docker-compose.yml`修改 PUID (User id) 和 PGID (group id) 值 ). + + + +<br> +3 - 编辑 Laravel 的配置. + +如果你还没有安装Laravel项目,请查看 [How to Install Laravel in a Docker Container](#Install-Laravel). + +打开 Laravel的 `.env` 文件 然后 配置 你的`mysql`的`DB_HOST`: + +```env +DB_HOST=mysql +``` + + + + + +<br> +4 - 打开浏览器访问localhost (`http://localhost/`). + + + +<br> +**调试**: 如果你碰到任何问题,请查看 [调试](#debugging) 章节 +如果你需要特别支持,请联系我,更多细节在[帮助 & 问题](#Help)章节 + + +<br> +<a name="Documentation"></a> +## 文档 + + +<a name="Docker"></a> +### [Docker] + + + +<a name="List-current-running-Containers"></a> +### 列出正在运行的容器 +```bash +docker ps +``` +你也可以使用以下命令查看某项目的容器 + + +```bash +docker-compose ps +``` + + + + + +<br> +<a name="Close-all-running-Containers"></a> +### 关闭所有容器 +```bash +docker-compose stop +``` + +停止某个容器: + +```bash +docker-compose stop {容器名称} +``` + +<br> +<a name="Delete-all-existing-Containers"></a> +### 删除所有容器 +```bash +docker-compose down +``` + + +小心这个命令,因为它也会删除你的数据容器。(如果你想保留你的数据你应该在上述命令后列出容器名称删除每个容器本身):* + + + + + +<br> +<a name="Enter-Container"></a> +### 进入容器 (通过SSH 进入一个运行中的容器) + +1 - 首先使用 `docker ps`命令查看正在运行的容器 + +2 - 进入某个容器使用: + +```bash +docker-compose exec {container-name} bash +``` + +*例如: 进入 MySQL 容器* + +```bash +docker-compose exec mysql bash +``` + +3 - 退出容器, 键入 `exit`. + + + + + + + +<br> +<a name="Edit-Container"></a> +### 编辑默认容器配置 +打开 `docker-compose.yml` 然后 按照你想的修改. + +例如: + +修改 MySQL 数据库名称: + +```yml + environment: + MYSQL_DATABASE: laradock +``` + +修改 Redis 默认端口为 1111: + +```yml + ports: + - "1111:6379" +``` + + + + + + + + +<br> +<a name="Edit-a-Docker-Image"></a> +### 编辑Docker镜像 + +1 - 找到你想修改的镜像的 `dockerfile` , +<br> +例如: `mysql` 在 `mysql/Dockerfile`. + +2 - 按你所要的编辑文件. + +3 - 重新构建容器: + +```bash +docker-compose build mysql +``` +更多信息在容器重建中 [点击这里](#Build-Re-build-Containers). + + + + + + + + +<br> +<a name="Build-Re-build-Containers"></a> +### 建立/重建容器 + + +如果你做任何改变`dockerfile`确保你运行这个命令,可以让所有修改更改生效: + + +```bash +docker-compose build +``` +选择你可以指定哪个容器重建(而不是重建所有的容器): + + +```bash +docker-compose build {container-name} +``` + +如果你想重建整个容器,你可能需要使用 `--no-cache` 选项 (`docker-compose build --no-cache {container-name}`). + + + + + +<br> +<a name="Add-Docker-Images"></a> +### 增加更多软件 (Docker 镜像) + +为了增加镜像(软件), 编辑 `docker-compose.yml` 添加容器细节, 你需要熟悉 [docker compose 文件语法](https://docs.docker.com/compose/compose-file/). + + + + + + + + + +<br> +<a name="View-the-Log-files"></a> +### 查看日志文件 +Nginx的日志在 `logs/nginx` 目录 + +然后查看其它容器日志(MySQL, PHP-FPM,...) 你可以运行: + +```bash +docker logs {container-name} +``` + + + + + +<br> +<a name="Laravel"></a> +### [Laravel] + + + + +<a name="Install-Laravel"></a> +### 从Docker镜像安装Laravel +1 - 首先你需要进入 Workspace 容器. + +2 - 安装 Laravel. + +例如 使用 Composer + +```bash +composer create-project laravel/laravel my-cool-app "5.2.*" +``` + +> 我们建议使用 `composer create-project` 替换Laravel 安装器去安装Laravel. + +关于更多Laravel安装内容请 [点击这儿](https://laravel.com/docs/master#installing-laravel). + + +3 - 编辑 `docker-compose.yml` 映射新的应用目录: +系统默认LaraDock假定Laravel应用在LaraDock的父级目录中 +By default LaraDock assumes the Laravel application is living in the parent directory of the laradock folder. + +更新Laravel应用在 `my-cool-app` 目录中, 我们需要用 `../my-cool-app/:/var/www`替换 `../:/var/www` , 如下: + +```yaml + application: + build: ./application + volumes: + - ../my-cool-app/:/var/www +``` +4 - 进入目录下继续工作.. + +```bash +cd my-cool-app +``` + +5 - 回到LaraDock安装步骤,看看如何编辑`env`的文件。 + +<br> +<a name="Run-Artisan-Commands"></a> +### 运行 Artisan 命令 +你可以从Workspace容器运行artisan命令和其他终端命令 + +1 - 确认Workspace容器已经运行. + +```bash +docker-compose up -d workspace // ..and all your other containers +``` + +2 - 找到Workspace容器名称: + +```bash +docker-compose ps +``` + +3 - 进入Workspace容器: + +```bash +docker-compose exec workspace bash +``` + +增加 `--user=laradock` (例如 `docker-compose exec --user=laradock workspace bash`) 作为您的主机的用户创建的文件. + + +4 - 运行任何你想的 :) + +```bash +php artisan +``` +```bash +Composer update +``` +```bash +phpunit +``` + +<br> +<a name="Use-Redis"></a> +### 使用 Redis +1 - 首先务必用 `docker-compose up` 命令运行 (`redis`)容器. + + +```bash +docker-compose up -d redis +``` + +2 - 打开你的Laravel的 `.env` 文件 然后 配置`redis`的`REDIS_HOST` + +```env +REDIS_HOST=redis +``` +如果在你的`.env` 文件没有找到`REDIS_HOST`变量。打开数据库配置文件`config/database.php`然后用`redis`替换默认IP`127.0.0.1`,例如: + + +```php +'redis' => [ + 'cluster' => false, + 'default' => [ + 'host' => 'redis', + 'port' => 6379, + 'database' => 0, + ], +], +``` + +3 - 启用Redis缓存或者开启Session管理也在`.env`文件中用`redis`替换默认`file`设置`CACHE_DRIVER` 和 `SESSION_DRIVER` + +```env +CACHE_DRIVER=redis +SESSION_DRIVER=redis +``` + +4 - 最好务必通过Compose安装 `predis/predis` 包 `(~1.0)`: + +```bash +composer require predis/predis:^1.0 +``` + +5 - 你可以用以下代码在Laravel中手动测试: + +```php +\Cache::store('redis')->put('LaraDock', 'Awesome', 10); +``` + + + + + +<br> +<a name="Use-Mongo"></a> +### 使用 Mongo + +1 - 首先在Workspace和PHP-FPM容器中安装`mongo`: +<br> +a) 打开 `docker-compose.yml` 文件 +<br> +b) 在Workspace容器中找到`INSTALL_MONGO`选项: + +<br> +c) 设置为 `true` +<br> +d) 在PHP-FPM容器中找到`INSTALL_MONGO` <br> +e) 设置为 `true` + +相关配置项如下: + +```yml + workspace: + build: + context: ./workspace + args: + - INSTALL_MONGO=true + ... + php-fpm: + build: + context: ./php-fpm + args: + - INSTALL_MONGO=true + ... +``` + +2 - 重建`Workspace、PHP-FPM`容器 `docker-compose build workspace php-fpm` + + + +3 - 使用`docker-compose up` 命令运行MongoDB容器 (`mongo`) + +```bash +docker-compose up -d mongo +``` + + +4 - 在`config/database.php` 文件添加MongoDB的配置项: + +```php +'connections' => [ + + 'mongodb' => [ + 'driver' => 'mongodb', + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', 27017), + 'database' => env('DB_DATABASE', 'database'), + 'username' => '', + 'password' => '', + 'options' => [ + 'database' => '', + ] + ], + + // ... + +], +``` + +5 - 打开Laravel的 `.env` 文件 然后 更新以下字段: + +- 设置 `DB_HOST` 为 `mongo`的主机IP. +- 设置 `DB_PORT` 为 `27017`. +- 设置 `DB_DATABASE` 为 `database`. + + +6 - 最后务必通过Composer安装`jenssegers/mongodb`包,添加服务提供者(Laravel Service Provider) + + +```bash +composer require jenssegers/mongodb +``` +更多细节内容 [点击这儿](https://github.com/jenssegers/laravel-mongodb#installation). + +7 - 测试: + +- 首先让你的模型继承Mongo的Eloquent Model. 查看 [文档](https://github.com/jenssegers/laravel-mongodb#eloquent). +- 进入Workspace容器. +- 迁移数据库 `php artisan migrate`. + + + + + + +<br> +<a name="PHP"></a> +### [PHP] + + + + + + +<a name="Install-PHP-Extensions"></a> +### 安装PHP拓展 +安装PHP扩展之前,你必须决定你是否需要`FPM`或`CLI`,因为他们安装在不同的容器上,如果你需要两者,则必须编辑两个容器。 + +PHP-FPM拓展务必安装在 `php-fpm/Dockerfile-XX`. *(用你PHP版本号替换 XX)*. +<br> +PHP-CLI拓展应该安装到`workspace/Dockerfile`. + + +<br> +<a name="Change-the-PHP-FPM-Version"></a> +### 修改PHP-FPM版本 +默认运行**PHP-FPM 7.0**版本. + +>PHP-FPM负责服务你的应用代码,如果你是计划运行您的应用程序在不同PHP-FPM版本上,则不需要更改PHP-CLI版本。 + + +#### A) 切换版本 PHP `7.0` 到 PHP `5.6` + +1 - 打开 `docker-compose.yml`。 + +2 - 在PHP容器的 `Dockerfile-70`文件。 + +3 - 修改版本号, 用`Dockerfile-56`替换 `Dockerfile-70` , 例如: + +```txt +php-fpm: + build: + context: ./php-fpm + dockerfile: Dockerfile-70 +``` + +4 - 最后重建PHP容器 + +```bash +docker-compose build php +``` + +> 更多关于PHP基础镜像, 请访问 [PHP Docker官方镜像](https://hub.docker.com/_/php/). + + +#### B) 切换版本 PHP `7.0` 或 `5.6` 到 PHP `5.5` +我们已不在本地支持PHP5.5,但是你按照以下步骤获取: + +1 - 克隆 `https://github.com/LaraDock/php-fpm`. + +3 - 重命名 `Dockerfile-56` 为 `Dockerfile-55`. + +3 - 编辑文件 `FROM php:5.6-fpm` 为 `FROM php:5.5-fpm`. + +4 - 从 `Dockerfile-55`构建镜像. + +5 - 打开 `docker-compose.yml` 文件. + +6 - 将 `php-fpm` 指向你的 `Dockerfile-55` 文件. + + + + + + + + + + + + +<br> +<a name="Change-the-PHP-CLI-Version"></a> +### 修改 PHP-CLI 版本 +默认运行**PHP-CLI 7.0**版本 + +>说明: PHP-CLI只用于执行Artisan和Composer命令,不服务于你的应用代码,这是PHP-FPM的工作,所以编辑PHP-CLI的版本不是很重要。 +PHP-CLI安装在Workspace容器,改变PHP-CLI版本你需要编辑`workspace/Dockerfile`. +现在你必须手动修改PHP-FPM的`Dockerfile`或者创建一个新的。 (可以考虑贡献功能). + + + + +<br> +<a name="Install-xDebug"></a> +### 安装 xDebug + +1 - 首先在Workspace和PHP-FPM容器安装 `xDebug`: +<br> +a) 打开 `docker-compose.yml` 文件 +<br> +b) 在Workspace容器中找到 `INSTALL_XDEBUG` 选项 +<br> +c) 改为 `true` +<br> +d) 在PHP-FPM容器中找到 `INSTALL_XDEBUG ` 选项<br> +e) 改为 `true` + +例如: + +```yml + workspace: + build: + context: ./workspace + args: + - INSTALL_XDEBUG=true + ... + php-fpm: + build: + context: ./php-fpm + args: + - INSTALL_XDEBUG=true + ... +``` + +2 - 重建容器 `docker-compose build workspace php-fpm` + + + +<br> +<a name="Misc"></a> +### [Misc] + + +<br> +<a name="Use-custom-Domain"></a> +### 使用自定义域名 (替换Docker的IP) + +假定你的自定义域名是 `laravel.dev` + +1 - 打开 `/etc/hosts` 文件 添加以下内容,映射你的localhost 地址 `127.0.0.1` 为 `laravel.dev` 域名 +```bash +127.0.0.1 laravel.dev +``` + +2 - 打开你的浏览器访问 `{http://laravel.dev}` + +你可以在nginx配置文件自定义服务器名称,如下: + + +```conf +server_name laravel.dev; +``` + + + +<br> +<a name="Enable-Global-Composer-Build-Install"></a> +### 安装全局Composer命令 + +为启用全局Composer Install在容器构建中允许你安装composer的依赖,然后构建完成后就是可用的。 + +1 - 打开 `docker-compose.yml` 文件 + +2 - 在Workspace容器找到 `COMPOSER_GLOBAL_INSTALL` 选项并设置为 `true` + +例如: + +```yml + workspace: + build: + context: ./workspace + args: + - COMPOSER_GLOBAL_INSTALL=true + ... +``` +3 - 现在特价你的依赖关系到 `workspace/composer.json` + +4 - 重建Workspace容器 `docker-compose build workspace` + + + + +<br> +<a name="Install-Prestissimo"></a> +### 安装 Prestissimo + +[Prestissimo](https://github.com/hirak/prestissimo) 是一个平行安装功能的composer插件。 +1 - 在安装期间,使全局Composer Install 正在运行: + +点击这个 [启用全局Composer构建安装](#Enable-Global-Composer-Build-Install) 然后继续步骤1、2. + +2 - 添加 prestissimo 依赖到 Composer: + +a - 现在打开 `workspace/composer.json` 文件 + +b - 添加 `"hirak/prestissimo": "^0.3"` 依赖 + +c - 重建Workspace容器 `docker-compose build workspace` + + + + +<br> +<a name="Install-Node"></a> +### 安装 Node + NVM + +在Workspace 容器安装 NVM 和 NodeJS +1 - 打开 `docker-compose.yml` 文件 + +2 - 在Workspace容器找到 `INSTALL_NODE` 选项设为 `true` + +例如: + +```yml + workspace: + build: + context: ./workspace + args: + - INSTALL_NODE=true + ... +``` + +3 - 重建容器 `docker-compose build workspace` + + + +<br> +<a name="debugging"></a> +### Debugging + +*这里是你可能面临的常见问题列表,以及可能的解决方案.* + +#### 看到空白页而不是Laravel的欢迎页面! + +在Laravel根目录,运行下列命令: + +```bash +sudo chmod -R 777 storage bootstrap/cache +``` + +#### 看到 "Welcome to nginx" 而不是 Laravel 应用! + +在浏览器使用 `http://127.0.0.1` 替换 `http://localhost`. + +#### 看到包含 `address already in use` 的错误 + +确保你想运行的服务端口(80, 3306, etc.)不是已经被其他程序使用,例如`apache`/`httpd`服务或其他安装的开发工具 + + +<br> +<a name="upgrading-laradock"></a> +### LaraDock 升级 + + +从Docker Toolbox (VirtualBox)移动到Docker Native (for Mac/Windows),需要从 LaraDock v3.* 升级到 v4.*: + +1. 停止Docker虚拟机 `docker-machine stop {default}` +2. 安装 Docker [Mac](https://docs.docker.com/docker-for-mac/) 或 [Windows](https://docs.docker.com/docker-for-windows/). +3. 升级 LaraDock 到 `v4.*.*` (`git pull origin master`) +4. 像之前一样使用LaraDock: `docker-compose up -d nginx mysql`. + +**说明:** 如果你面临任何上面的问题的最后一步:重建你所有的容器 +`docker-compose build --no-cache` +"警告:容器数据可能会丢失!" + + + + + + + +<br> +## 贡献 +这个小项目是由一个有一个全职工作和很多的职责的人建立的,所以如果你喜欢这个项目,并且发现它需要一个bug修复或支持或新软件或升级任何容器,或其他任何. . 你是非常欢迎,欢迎毫不不犹豫地贡献吧:) + +#### 阅读我们的 [贡献说明](https://github.com/LaraDock/laradock/blob/master/CONTRIBUTING.md) + +<a name="Help"></a> +## 帮助 & 问题 + +从聊天室 [Gitter](https://gitter.im/LaraDock/laradock) 社区获取帮助和支持. + +你也可以打开Github上的 [issue](https://github.com/laradock/laradock/issues) (将被贴上问题和答案) 或与大家讨论 [Gitter](https://gitter.im/LaraDock/laradock). + +Docker或Laravel的特别帮助,你可以在[Codementor.io](https://www.codementor.io/mahmoudz)上直接和项目创始人在线沟通 + +## 关于作者 + +**创始人:** + +- [Mahmoud Zalt](https://github.com/Mahmoudz) (Twitter [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)) + +**优秀的人:** + +- [Contributors](https://github.com/LaraDock/laradock/graphs/contributors) +- [Supporters](https://github.com/LaraDock/laradock/issues?utf8=%E2%9C%93&q=) + + +## 许可证 + +[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE) (MIT) @@ -9,21 +9,21 @@ docker-compose up -d (if you want to run in background) http://localhost:5050/browser/ (fire up pgAdmin) Web: - - host: vainsocial_postgres_web + - host: vaindock_postgres_web - port: 5432 - user: vainweb - password: vainweb - db: vainsocial-web Raw: - - host: vainsocial_postgres_raw + - host: vaindock_postgres_raw - port: 5432 - user: vainraw - password: vainraw - db: vainsocial-raw - Running the Vainsocial.com + Running the vainsocial.com > only needed if you are running the container for the first time ``` diff --git a/apache2/Dockerfile b/apache2/Dockerfile new file mode 100644 index 0000000..569ba9f --- /dev/null +++ b/apache2/Dockerfile @@ -0,0 +1,17 @@ +FROM webdevops/apache:ubuntu-16.04 + +MAINTAINER Eric Pfeiffer <computerfr33k@users.noreply.github.com> + +ARG PHP_SOCKET=php-fpm:9000 + +ENV WEB_PHP_SOCKET=$PHP_SOCKET + +ENV WEB_DOCUMENT_ROOT=/var/www/public + +EXPOSE 80 443 + +WORKDIR /var/www/public + +ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"] + +CMD ["supervisord"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7b43f6e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,175 @@ +version: '2' + +services: + +### Applications Code Container ############################# + + applications: + image: tianon/true + volumes: + # as long as all the Vainglory repo are checked out on the same level this will work just fine + # volume to map Vainsocial.com code. used by Workspace repo. + - ../vainsocial.com/:/var/www/vainsocial + +### Workspace Utilities Container ########################### + + workspace: + container_name: vaindock_workspace + build: + context: ./workspace + args: + - INSTALL_XDEBUG=true + - INSTALL_NODE=false # required is node is not installed locally + - INSTALL_YARN=false + - INSTALL_V8JS_EXTENSION=false + - COMPOSER_GLOBAL_INSTALL=true # required if composer is not installed locally + - INSTALL_WORKSPACE_SSH=true + - INSTALL_LARAVEL_ENVOY=false + - INSTALL_DEPLOYER=false + - PUID=1000 + - PGID=1000 + - NODE_VERSION=stable + - YARN_VERSION=latest + - TZ=UTC + volumes_from: + - applications + extra_hosts: + # IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts) + - "dockerhost:10.0.75.1" + ports: + - "2222:22" + links: + - vaindock_postgres_raw + - vaindock_postgres_web + tty: true + +### PHP-FPM Container ####################################### + + php-fpm: + container_name: vaindock_php-fpm + build: + context: ./php-fpm + args: + - INSTALL_XDEBUG=true + - INSTALL_SOAP=false + - INSTALL_MONGO=false + - INSTALL_ZIP_ARCHIVE=false + - INSTALL_BCMATH=false + - INSTALL_PHPREDIS=true + - INSTALL_MEMCACHED=false + - INSTALL_OPCACHE=false + - INSTALL_EXIF=false + dockerfile: Dockerfile-70 + volumes_from: + - applications + expose: + - "9000" + links: + - workspace + - vaindock_postgres_raw + - vaindock_postgres_web + extra_hosts: + # IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts) + - "dockerhost:10.0.75.1" + environment: + # IMPORTANT: Set the Remote Interpreter entry matching name to `laravel` + - PHP_IDE_CONFIG=serverName=laravel + +### Nginx Server Container ################################## + +### The webroot is mapped to vainsocial.dev (entry in hosts file) + + nginx: + container_name: vaindock_nginx + build: + context: ./nginx + args: + - PHP_UPSTREAM=php-fpm + volumes_from: + - applications + volumes: + - ./logs/nginx/:/var/log/nginx + - ./nginx/sites/:/etc/nginx/sites-available + ports: + - "80:80" + - "443:443" + links: + - php-fpm + +### Apache Server Container ################################# + + # apache2: + # build: + # context: ./apache2 + # args: + # - PHP_SOCKET=php-fpm:9000 + # volumes_from: + # - applications + # volumes: + # - ./logs/apache2:/var/log/apache2 + # ports: + # - "80:80" + # - "443:443" + # links: + # - php-fpm + + +### PostgreSQL Container - Web #################################### + + vaindock_postgres_web: + container_name: vaindock_postgres_web + build: ./postgres + volumes: + - vaindock_pg_web:/var/lib/postgresql/data + ports: + - "5432:5432" + environment: + POSTGRES_DB: vainsocial-web + POSTGRES_USER: vainweb + POSTGRES_PASSWORD: vainweb + +### PostgreSQL Container - Raw #################################### + + vaindock_postgres_raw: + container_name: vaindock_postgres_raw + build: ./postgres + volumes: + - vaindock_pg_raw:/var/lib/postgresql/data + ports: + - "5433:5432" + environment: + POSTGRES_DB: vainsocial-raw + POSTGRES_USER: vainraw + POSTGRES_PASSWORD: vainraw + + +### Redis Container ######################################### + +# redis: +# build: ./redis +# volumes: +# - redis:/data +# ports: +# - "6379:6379" + +### pgAdmin Container ####################################### + + pgadmin: + container_name: vaindock_pgadmin + build: ./pgadmin + ports: + - "5050:5050" + links: + - vaindock_postgres_raw + - vaindock_postgres_web + + +### Volumes Setup ########################################### + +volumes: + vaindock_pg_raw: + driver: "local" + vaindock_pg_web: + driver: "local" + sessions: ## nothing is connected to this (- ./data/sessions:/sessions) + driver: "local" diff --git a/nginx/Dockerfile b/nginx/Dockerfile new file mode 100644 index 0000000..1a1db96 --- /dev/null +++ b/nginx/Dockerfile @@ -0,0 +1,18 @@ +FROM nginx:alpine + +MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> + +ADD nginx.conf /etc/nginx/ + +ARG PHP_UPSTREAM=php-fpm + +RUN apk update \ + && apk upgrade \ + && apk add --no-cache bash \ + && adduser -D -H -u 1000 -s /bin/bash www-data \ + && rm /etc/nginx/conf.d/default.conf \ + && echo "upstream php-upstream { server ${PHP_UPSTREAM}:9000; }" > /etc/nginx/conf.d/upstream.conf + +CMD ["nginx"] + +EXPOSE 80 443 diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..97e5a0e --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,30 @@ +user www-data; +worker_processes 4; +pid /run/nginx.pid; +daemon off; + +events { + worker_connections 2048; + multi_accept on; + use epoll; +} + +http { + server_tokens off; + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 15; + types_hash_max_size 2048; + client_max_body_size 20M; + include /etc/nginx/mime.types; + default_type application/octet-stream; + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + gzip on; + gzip_disable "msie6"; + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-available/*; + open_file_cache max=100; + charset UTF-8; +} diff --git a/nginx/sites/.gitignore b/nginx/sites/.gitignore new file mode 100644 index 0000000..0f0ea0e --- /dev/null +++ b/nginx/sites/.gitignore @@ -0,0 +1,3 @@ +*.conf +!default.conf +!vainsocial.dev.conf
\ No newline at end of file diff --git a/nginx/sites/default.conf b/nginx/sites/default.conf new file mode 100644 index 0000000..2ce47b5 --- /dev/null +++ b/nginx/sites/default.conf @@ -0,0 +1,30 @@ +server { + + listen 80 default_server; + listen [::]:80 default_server ipv6only=on; + + server_name laradock; + root /var/www/public; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} + + + diff --git a/nginx/sites/sample.conf.example b/nginx/sites/sample.conf.example new file mode 100644 index 0000000..e6520e5 --- /dev/null +++ b/nginx/sites/sample.conf.example @@ -0,0 +1,28 @@ +server { + + listen 80; + listen [::]:80; + + server_name sample.dev; + root /var/www/sample/public; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} + + + diff --git a/nginx/sites/vainsocial.dev.conf b/nginx/sites/vainsocial.dev.conf new file mode 100644 index 0000000..57491a2 --- /dev/null +++ b/nginx/sites/vainsocial.dev.conf @@ -0,0 +1,25 @@ +server { + + listen 80; + listen [::]:80; + + server_name vainsocial.dev; + root /var/www/vainsocial/public; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} diff --git a/pgadmin/Dockerfile b/pgadmin/Dockerfile new file mode 100644 index 0000000..2d34c22 --- /dev/null +++ b/pgadmin/Dockerfile @@ -0,0 +1,5 @@ +FROM fenglc/pgadmin4 + +MAINTAINER Bo-Yi Wu <appleboy.tw@gmail.com> + +EXPOSE 5050 diff --git a/php-fpm/Dockerfile-56 b/php-fpm/Dockerfile-56 new file mode 100644 index 0000000..5cdb920 --- /dev/null +++ b/php-fpm/Dockerfile-56 @@ -0,0 +1,171 @@ +# +#-------------------------------------------------------------------------- +# Image Setup +#-------------------------------------------------------------------------- +# +# To edit the 'php-fpm' base Image, visit its repository on Github +# https://github.com/LaraDock/php-fpm +# +# To change its version, see the available Tags on the Docker Hub: +# https://hub.docker.com/r/laradock/php-fpm/tags/ +# + +FROM laradock/php-fpm:5.6--1.2 + +MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> + +# +#-------------------------------------------------------------------------- +# Mandatory Software's Installation +#-------------------------------------------------------------------------- +# +# Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....) +# are installed on the base image 'laradock/php-fpm' image. If you want +# to add more Software's or remove existing one, you need to edit the +# base image (https://github.com/LaraDock/php-fpm). +# + +# +#-------------------------------------------------------------------------- +# Optional Software's Installation +#-------------------------------------------------------------------------- +# +# Optional Software's will only be installed if you set them to `true` +# in the `docker-compose.yml` before the build. +# Example: +# - INSTALL_ZIP_ARCHIVE=true +# + +##################################### +# SOAP: +##################################### + +ARG INSTALL_SOAP=false +RUN if [ ${INSTALL_SOAP} = true ]; then \ + # Install the soap extension + apt-get -y update && \ + apt-get -y install libxml2-dev php-soap && \ + docker-php-ext-install soap \ +;fi + +##################################### +# xDebug: +##################################### + +ARG INSTALL_XDEBUG=false +RUN if [ ${INSTALL_XDEBUG} = true ]; then \ + # Install the xdebug extension + pecl install xdebug && \ + docker-php-ext-enable xdebug \ +;fi + +# Copy xdebug configration for remote debugging +COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini + +##################################### +# MongoDB: +##################################### + +ARG INSTALL_MONGO=false +RUN if [ ${INSTALL_MONGO} = true ]; then \ + # Install the mongodb extension + pecl install mongodb && \ + docker-php-ext-enable mongodb \ +;fi + +##################################### +# ZipArchive: +##################################### + +ARG INSTALL_ZIP_ARCHIVE=false +RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ + # Install the zip extension + pecl install zip && \ + docker-php-ext-enable zip \ +;fi + +##################################### +# bcmath: +##################################### + +ARG INSTALL_BCMATH=false +RUN if [ ${INSTALL_BCMATH} = true ]; then \ + # Install the bcmath extension + docker-php-ext-install bcmath \ +;fi + +##################################### +# PHP Memcached: +##################################### + +ARG INSTALL_MEMCACHED=false +RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ + # Install the php memcached extension + pecl install memcached && \ + docker-php-ext-enable memcached \ +;fi + +##################################### +# PHP Aerospike: +##################################### + +ARG INSTALL_AEROSPIKE_EXTENSION=false +ENV INSTALL_AEROSPIKE_EXTENSION ${INSTALL_AEROSPIKE_EXTENSION} +# Copy aerospike configration for remote debugging +COPY ./aerospike.ini /usr/local/etc/php/conf.d/aerospike.ini +RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then \ + # Install the php aerospike extension + curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/luciano-jr/aerospike-client-php/archive/master.tar.gz" \ + && mkdir -p aerospike-client-php \ + && tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ + && ( \ + cd aerospike-client-php/src/aerospike \ + && phpize \ + && ./build.sh \ + && make install \ + ) \ + && rm /tmp/aerospike-client-php.tar.gz \ +;fi + +##################################### +# Opcache: +##################################### + +ARG INSTALL_OPCACHE=false +RUN if [ ${INSTALL_OPCACHE} = true ]; then \ + docker-php-ext-install opcache && \ + docker-php-ext-enable opcache \ +;fi + +# Copy opcache configration +COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini + +##################################### +# Codeigniter Modifications: +##################################### + +ARG CODEIGNITER=false +RUN if [ ${CODEIGNITER} = true ]; then \ + # Install Codeigniter PHP extentions requirements + docker-php-ext-install mysqli && \ + docker-php-ext-install tokenizer \ +;fi + +# +#-------------------------------------------------------------------------- +# Final Touch +#-------------------------------------------------------------------------- +# + +ADD ./laravel.ini /usr/local/etc/php/conf.d +ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/ + +RUN rm -r /var/lib/apt/lists/* + +RUN usermod -u 1000 www-data + +WORKDIR /var/www + +CMD ["php-fpm"] + +EXPOSE 9000 diff --git a/php-fpm/Dockerfile-70 b/php-fpm/Dockerfile-70 new file mode 100644 index 0000000..93deeae --- /dev/null +++ b/php-fpm/Dockerfile-70 @@ -0,0 +1,205 @@ +# +#-------------------------------------------------------------------------- +# Image Setup +#-------------------------------------------------------------------------- +# +# To edit the 'php-fpm' base Image, visit its repository on Github +# https://github.com/LaraDock/php-fpm +# +# To change its version, see the available Tags on the Docker Hub: +# https://hub.docker.com/r/laradock/php-fpm/tags/ +# + +FROM laradock/php-fpm:7.0--1.2 + +MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> + +# +#-------------------------------------------------------------------------- +# Mandatory Software's Installation +#-------------------------------------------------------------------------- +# +# Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....) +# are installed on the base image 'laradock/php-fpm' image. If you want +# to add more Software's or remove existing one, you need to edit the +# base image (https://github.com/LaraDock/php-fpm). +# + +# +#-------------------------------------------------------------------------- +# Optional Software's Installation +#-------------------------------------------------------------------------- +# +# Optional Software's will only be installed if you set them to `true` +# in the `docker-compose.yml` before the build. +# Example: +# - INSTALL_ZIP_ARCHIVE=true +# - ... +# + +##################################### +# SOAP: +##################################### + +ARG INSTALL_SOAP=false +RUN if [ ${INSTALL_SOAP} = true ]; then \ + # Install the soap extension + apt-get -y update && \ + apt-get -y install libxml2-dev php-soap && \ + docker-php-ext-install soap \ +;fi + +##################################### +# xDebug: +##################################### + +ARG INSTALL_XDEBUG=false +RUN if [ ${INSTALL_XDEBUG} = true ]; then \ + # Install the xdebug extension + pecl install xdebug && \ + docker-php-ext-enable xdebug \ +;fi + +##################################### +# PHP REDIS EXTENSION FOR PHP 7.0 +##################################### +ARG INSTALL_PHPREDIS=false +RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ + # Install Php Redis Extension + pecl install -o -f redis \ + && rm -rf /tmp/pear \ + && docker-php-ext-enable redis \ +;fi + +# Copy xdebug configration for remote debugging +COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini + +##################################### +# MongoDB: +##################################### + +ARG INSTALL_MONGO=false +RUN if [ ${INSTALL_MONGO} = true ]; then \ + # Install the mongodb extension + pecl install mongodb && \ + docker-php-ext-enable mongodb \ +;fi + +##################################### +# ZipArchive: +##################################### + +ARG INSTALL_ZIP_ARCHIVE=false +RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ + # Install the zip extension + pecl install zip && \ + docker-php-ext-enable zip \ +;fi + +##################################### +# bcmath: +##################################### + +ARG INSTALL_BCMATH=false +RUN if [ ${INSTALL_BCMATH} = true ]; then \ + # Install the bcmath extension + docker-php-ext-install bcmath \ +;fi + +##################################### +# PHP Memcached: +##################################### + +ARG INSTALL_MEMCACHED=false +RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ + # Install the php memcached extension + curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \ + && mkdir -p memcached \ + && tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \ + && ( \ + cd memcached \ + && phpize \ + && ./configure \ + && make -j$(nproc) \ + && make install \ + ) \ + && rm -r memcached \ + && rm /tmp/memcached.tar.gz \ + && docker-php-ext-enable memcached \ +;fi + +##################################### +# Exif: +##################################### + +ARG INSTALL_EXIF=false +RUN if [ ${INSTALL_EXIF} = true ]; then \ + # Enable Exif PHP extentions requirements + docker-php-ext-install exif && \ + docker-php-ext-enable exif \ +;fi + + +##################################### +# PHP Aerospike: +##################################### + +ARG INSTALL_AEROSPIKE_EXTENSION=false +ENV INSTALL_AEROSPIKE_EXTENSION ${INSTALL_AEROSPIKE_EXTENSION} +# Copy aerospike configration for remote debugging +COPY ./aerospike.ini /usr/local/etc/php/conf.d/aerospike.ini +RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then \ + # Install the php aerospike extension + curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/luciano-jr/aerospike-client-php/archive/master.tar.gz" \ + && mkdir -p aerospike-client-php \ + && tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ + && ( \ + cd aerospike-client-php/src/aerospike \ + && phpize \ + && ./build.sh \ + && make install \ + ) \ + && rm /tmp/aerospike-client-php.tar.gz \ +;fi + +##################################### +# Opcache: +##################################### +ARG INSTALL_OPCACHE=false +RUN if [ ${INSTALL_OPCACHE} = true ]; then \ + docker-php-ext-install opcache && \ + docker-php-ext-enable opcache \ +;fi + +# Copy opcache configration +COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini + +##################################### +# Codeigniter Modifications: +##################################### + +ARG CODEIGNITER=false +RUN if [ ${CODEIGNITER} = true ]; then \ + # Install Codeigniter PHP extentions requirements + docker-php-ext-install mysqli && \ + docker-php-ext-install tokenizer \ +;fi + +# +#-------------------------------------------------------------------------- +# Final Touch +#-------------------------------------------------------------------------- +# + +ADD ./laravel.ini /usr/local/etc/php/conf.d +ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/ + +RUN rm -r /var/lib/apt/lists/* + +RUN usermod -u 1000 www-data + +WORKDIR /var/www + +CMD ["php-fpm"] + +EXPOSE 9000 diff --git a/php-fpm/aerospike.ini b/php-fpm/aerospike.ini new file mode 100644 index 0000000..f9c8f61 --- /dev/null +++ b/php-fpm/aerospike.ini @@ -0,0 +1,3 @@ +extension=aerospike.so +aerospike.udf.lua_system_path=/usr/local/aerospike/lua +aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua
\ No newline at end of file diff --git a/php-fpm/laravel.ini b/php-fpm/laravel.ini new file mode 100644 index 0000000..486a2ca --- /dev/null +++ b/php-fpm/laravel.ini @@ -0,0 +1,13 @@ +date.timezone=UTC +display_errors=Off +log_errors=On + +; Maximum amount of memory a script may consume (128MB) +; http://php.net/memory-limit +memory_limit = 128M +; Maximum allowed size for uploaded files. +; http://php.net/upload-max-filesize +upload_max_filesize = 20M +; Sets max size of post data allowed. +; http://php.net/post-max-size +post_max_size = 20M diff --git a/php-fpm/laravel.pool.conf b/php-fpm/laravel.pool.conf new file mode 100644 index 0000000..ab2a4f1 --- /dev/null +++ b/php-fpm/laravel.pool.conf @@ -0,0 +1,76 @@ +; Unix user/group of processes +; Note: The user is mandatory. If the group is not set, the default user's group +; will be used. +user = www-data +group = www-data + +; The address on which to accept FastCGI requests. +; Valid syntaxes are: +; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on +; a specific port; +; 'port' - to listen on a TCP socket to all addresses on a +; specific port; +; '/path/to/unix/socket' - to listen on a unix socket. +; Note: This value is mandatory. +listen = 0.0.0.0:9000 + +; Choose how the process manager will control the number of child processes. +; Possible Values: +; static - a fixed number (pm.max_children) of child processes; +; dynamic - the number of child processes are set dynamically based on the +; following directives. With this process management, there will be +; always at least 1 children. +; pm.max_children - the maximum number of children that can +; be alive at the same time. +; pm.start_servers - the number of children created on startup. +; pm.min_spare_servers - the minimum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is less than this +; number then some children will be created. +; pm.max_spare_servers - the maximum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is greater than this +; number then some children will be killed. +; ondemand - no children are created at startup. Children will be forked when +; new requests will connect. The following parameter are used: +; pm.max_children - the maximum number of children that +; can be alive at the same time. +; pm.process_idle_timeout - The number of seconds after which +; an idle process will be killed. +; Note: This value is mandatory. +pm = dynamic + +; The number of child processes to be created when pm is set to 'static' and the +; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. +; This value sets the limit on the number of simultaneous requests that will be +; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. +; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP +; CGI. The below defaults are based on a server without much resources. Don't +; forget to tweak pm.* to fit your needs. +; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' +; Note: This value is mandatory. +pm.max_children = 20 + +; The number of child processes created on startup. +; Note: Used only when pm is set to 'dynamic' +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 +pm.start_servers = 2 + +; The desired minimum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.min_spare_servers = 1 + +; The desired maximum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.max_spare_servers = 3 + +;--------------------- + +; Make specific Docker environment variables available to PHP +env[DB_1_ENV_MYSQL_DATABASE] = $DB_1_ENV_MYSQL_DATABASE +env[DB_1_ENV_MYSQL_USER] = $DB_1_ENV_MYSQL_USER +env[DB_1_ENV_MYSQL_PASSWORD] = $DB_1_ENV_MYSQL_PASSWORD + +catch_workers_output = yes diff --git a/php-fpm/opcache.ini b/php-fpm/opcache.ini new file mode 100644 index 0000000..dcc670d --- /dev/null +++ b/php-fpm/opcache.ini @@ -0,0 +1,7 @@ +extension=opcache.so +opcache.enable="1" +opcache.memory_consumption="256" +opcache.use_cwd="0" +opcache.fast_shutdown="1" +opcache.max_file_size="0" +opcache.validate_timestamps="0" diff --git a/php-fpm/xdebug.ini b/php-fpm/xdebug.ini new file mode 100644 index 0000000..dfe2f10 --- /dev/null +++ b/php-fpm/xdebug.ini @@ -0,0 +1,13 @@ +; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini) + +xdebug.remote_autostart=0 +xdebug.remote_enable=0 +xdebug.remote_connect_back=0 +xdebug.cli_color=0 +xdebug.profiler_enable=0 +xdebug.remote_handler=dbgp +xdebug.remote_mode=req + +xdebug.remote_port=9000 +xdebug.remote_host=dockerhost +xdebug.idekey=PHPSTORM diff --git a/postgres/Dockerfile b/postgres/Dockerfile new file mode 100644 index 0000000..249cee5 --- /dev/null +++ b/postgres/Dockerfile @@ -0,0 +1,8 @@ +FROM postgres:latest + +MAINTAINER Ben M <git@bmagg.com> + +CMD ["postgres"] + +EXPOSE 5432 +EXPOSE 5433
\ No newline at end of file diff --git a/redis/Dockerfile b/redis/Dockerfile new file mode 100644 index 0000000..e8fedab --- /dev/null +++ b/redis/Dockerfile @@ -0,0 +1,11 @@ +FROM redis:latest + +MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> + +#COPY redis.conf /usr/local/etc/redis/redis.conf + +VOLUME /data + +EXPOSE 6379 + +CMD ["redis-server"] diff --git a/workspace/Dockerfile b/workspace/Dockerfile new file mode 100644 index 0000000..c82eedf --- /dev/null +++ b/workspace/Dockerfile @@ -0,0 +1,301 @@ +# +#-------------------------------------------------------------------------- +# Image Setup +#-------------------------------------------------------------------------- +# +# To edit the 'workspace' base Image, visit its repository on Github +# https://github.com/LaraDock/workspace +# +# To change its version, see the available Tags on the Docker Hub: +# https://hub.docker.com/r/laradock/workspace/tags/ +# + +FROM laradock/workspace:1.3 + +MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> + +# +#-------------------------------------------------------------------------- +# Mandatory Software's Installation +#-------------------------------------------------------------------------- +# +# Mandatory Software's such as ("php7.0-cli", "git", "vim", ....) are +# installed on the base image 'laradock/workspace' image. If you want +# to add more Software's or remove existing one, you need to edit the +# base image (https://github.com/LaraDock/workspace). +# + +# +#-------------------------------------------------------------------------- +# Optional Software's Installation +#-------------------------------------------------------------------------- +# +# Optional Software's will only be installed if you set them to `true` +# in the `docker-compose.yml` before the build. +# Example: +# - INSTALL_NODE=false +# - ... +# + +##################################### +# Non-Root User: +##################################### + +# Add a non-root user to prevent files being created with root permissions on host machine. +ARG PUID=1000 +ARG PGID=1000 +RUN groupadd -g $PGID laradock && \ + useradd -u $PUID -g laradock -m laradock + + +##################################### +# SOAP: +##################################### +USER root + +ARG INSTALL_SOAP=false +ENV INSTALL_SOAP ${INSTALL_SOAP} + +RUN if [ ${INSTALL_SOAP} = true ]; then \ + # Install the PHP SOAP extension + apt-get -y update && \ + add-apt-repository -y ppa:ondrej/php && \ + apt-get -y install libxml2-dev php7.0-soap && \ + echo "extension=soap.so" >> /etc/php/7.0/cli/conf.d/40-soap.ini \ +;fi + +##################################### +# Set Timezone +##################################### + +ARG TZ=UTC +ENV TZ ${TZ} +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +##################################### +# Composer: +##################################### + +# Add the composer.json +COPY ./composer.json /home/laradock/.composer/composer.json + +# Make sure that ~/.composer belongs to laradock +RUN chown -R laradock:laradock /home/laradock/.composer +USER laradock + +# Check if global install need to be ran +ARG COMPOSER_GLOBAL_INSTALL=false +ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL} +RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \ + # run the install + composer global install \ +;fi + +# Export composer vendor path +RUN echo "" >> ~/.bashrc && \ +echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc + +##################################### +# Crontab +##################################### +USER root + +COPY ./crontab /etc/cron.d +RUN chmod -R 644 /etc/cron.d + +##################################### +# User Aliases +##################################### + +USER laradock +COPY ./aliases.sh /home/laradock/aliases.sh +RUN echo "" >> ~/.bashrc && \ + echo "# Load Custom Aliases" >> ~/.bashrc && \ + echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \ + echo "" >> ~/.bashrc + +USER root +RUN echo "" >> ~/.bashrc && \ + echo "# Load Custom Aliases" >> ~/.bashrc && \ + echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \ + echo "" >> ~/.bashrc + +##################################### +# xDebug: +##################################### + +ARG INSTALL_XDEBUG=false +RUN if [ ${INSTALL_XDEBUG} = true ]; then \ + # Load the xdebug extension only with phpunit commands + apt-get update && \ + apt-get install -y --force-yes php7.0-xdebug && \ + sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini && \ + echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/vendor/bin/phpunit'" >> ~/.bashrc \ +;fi +# ADD for REMOTE debugging +COPY ./xdebug.ini /etc/php/7.0/cli/conf.d/xdebug.ini + +##################################### +# ssh: +##################################### +ARG INSTALL_WORKSPACE_SSH=false +ENV INSTALL_WORKSPACE_SSH ${INSTALL_WORKSPACE_SSH} + +ADD insecure_id_rsa /tmp/id_rsa +ADD insecure_id_rsa.pub /tmp/id_rsa.pub + +RUN if [ ${INSTALL_WORKSPACE_SSH} = true ]; then \ + rm -f /etc/service/sshd/down && \ + cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys \ + && cat /tmp/id_rsa.pub >> /root/.ssh/id_rsa.pub \ + && cat /tmp/id_rsa >> /root/.ssh/id_rsa \ + && rm -f /tmp/id_rsa* \ + && chmod 644 /root/.ssh/authorized_keys /root/.ssh/id_rsa.pub \ + && chmod 400 /root/.ssh/id_rsa \ +;fi + + +##################################### +# Node / NVM: +##################################### + +# Check if NVM needs to be installed +ARG NODE_VERSION=stable +ENV NODE_VERSION ${NODE_VERSION} +ARG INSTALL_NODE=false +ENV INSTALL_NODE ${INSTALL_NODE} +ENV NVM_DIR /home/laradock/.nvm +RUN if [ ${INSTALL_NODE} = true ]; then \ + # Install nvm (A Node Version Manager) + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.6/install.sh | bash && \ + . $NVM_DIR/nvm.sh && \ + nvm install ${NODE_VERSION} && \ + nvm use ${NODE_VERSION} && \ + nvm alias ${NODE_VERSION} && \ + npm install -g gulp bower vue-cli \ +;fi + +# Wouldn't execute when added to the RUN statement in the above block +# Source NVM when loading bash since ~/.profile isn't loaded on non-login shell +RUN if [ ${INSTALL_NODE} = true ]; then \ + echo "" >> ~/.bashrc && \ + echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \ +;fi + +# Add NVM binaries to root's .bashrc +USER root + +RUN if [ ${INSTALL_NODE} = true ]; then \ + echo "" >> ~/.bashrc && \ + echo 'export NVM_DIR="/home/laradock/.nvm"' >> ~/.bashrc && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \ +;fi + +##################################### +# YARN: +##################################### + +USER laradock + +ARG INSTALL_YARN=false +ENV INSTALL_YARN ${INSTALL_YARN} +ARG YARN_VERSION=latest +ENV YARN_VERSION ${YARN_VERSION} + +RUN if [ ${INSTALL_YARN} = true ]; then \ + [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && \ + if [ ${YARN_VERSION} = "latest" ]; then \ + curl -o- -L https://yarnpkg.com/install.sh | bash; \ + else \ + curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version ${YARN_VERSION}; \ + fi && \ + echo "" >> ~/.bashrc && \ + echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.bashrc \ +;fi + +# Add YARN binaries to root's .bashrc +USER root + +RUN if [ ${INSTALL_YARN} = true ]; then \ + echo "" >> ~/.bashrc && \ + echo 'export YARN_DIR="/home/laradock/.yarn"' >> ~/.bashrc && \ + echo 'export PATH="$YARN_DIR/bin:$PATH"' >> ~/.bashrc \ +;fi + + +##################################### +# PHP V8JS: +##################################### +USER root + +ARG INSTALL_V8JS_EXTENSION=false +ENV INSTALL_V8JS_EXTENSION ${INSTALL_V8JS_EXTENSION} + +RUN if [ ${INSTALL_V8JS_EXTENSION} = true ]; then \ + # Install the php V8JS extension + add-apt-repository -y ppa:pinepain/libv8-5.4 \ + && apt-get update \ + && apt-get install -y php-dev php-pear libv8-5.4 \ + && pecl install v8js \ + && echo "extension=v8js.so" >> /etc/php/7.0/cli/php.ini \ +;fi + +##################################### +# Non-root user : PHPUnit path +##################################### + +# add ./vendor/bin to non-root user's bashrc (needed for phpunit) +USER laradock + +RUN echo "" >> ~/.bashrc && \ + echo 'export PATH="/var/www/vendor/bin:$PATH"' >> ~/.bashrc + +##################################### +# Laravel Artisan Alias +##################################### +USER root + +RUN echo "" >> ~/.bashrc && \ + echo 'alias art="php artisan"' >> ~/.bashrc + +##################################### +# Laravel Envoy: +##################################### +USER laradock + +ARG INSTALL_LARAVEL_ENVOY=true +ENV INSTALL_LARAVEL_ENVOY ${INSTALL_LARAVEL_ENVOY} + +RUN if [ ${INSTALL_LARAVEL_ENVOY} = true ]; then \ + # Install the Laravel Envoy + composer global require "laravel/envoy=~1.0" \ +;fi + +##################################### +# Deployer: +##################################### +USER laradock + +ARG INSTALL_DEPLOYER=false +ENV INSTALL_DEPLOYER ${INSTALL_DEPLOYER} + +RUN if [ ${INSTALL_DEPLOYER} = true ]; then \ + # Install the Deployer + composer global require "deployer/deployer" \ +;fi + + +# +#-------------------------------------------------------------------------- +# Final Touch +#-------------------------------------------------------------------------- +# + +# Clean up +USER root +RUN apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Set default work directory +WORKDIR /var/www diff --git a/workspace/aerospike.ini b/workspace/aerospike.ini new file mode 100644 index 0000000..f9c8f61 --- /dev/null +++ b/workspace/aerospike.ini @@ -0,0 +1,3 @@ +extension=aerospike.so +aerospike.udf.lua_system_path=/usr/local/aerospike/lua +aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua
\ No newline at end of file diff --git a/workspace/aliases.sh b/workspace/aliases.sh new file mode 100644 index 0000000..f3e2a2c --- /dev/null +++ b/workspace/aliases.sh @@ -0,0 +1,71 @@ +#! /bin/bash + +# Colors used for status updates +ESC_SEQ="\x1b[" +COL_RESET=$ESC_SEQ"39;49;00m" +COL_RED=$ESC_SEQ"31;01m" +COL_GREEN=$ESC_SEQ"32;01m" +COL_YELLOW=$ESC_SEQ"33;01m" +COL_BLUE=$ESC_SEQ"34;01m" +COL_MAGENTA=$ESC_SEQ"35;01m" +COL_CYAN=$ESC_SEQ"36;01m" + +# Commonly Used Aliases +alias ..="cd .." +alias c="clear" +alias cla="clear && ls -l" +alias cll="clear && ls -la" +alias cls="clear && ls" +alias code="cd /var/www" +alias ea="vi ~/aliases" +alias g="gulp" +alias home="cd ~" +alias npm-global="npm list -g --depth 0" +alias ra="reload" +alias reload="source ~/.aliases && echo \"$COL_GREEN ==> Aliases Reloaded... $COL_RESET \n \"" +alias run="npm run" +alias tree="xtree" + +# Laravel / PHP Alisases +alias art="php artisan" +alias artisan="php artisan" +alias cdump="composer dump-autoload -o" +alias composer:dump="composer dump-autoload -o" +alias db:reset="php artisan migrate:reset && php artisan migrate --seed" +alias migrate="php artisan migrate" +alias seed="php artisan:seed" +alias phpunit="./vendor/bin/phpunit" + + +# requires installation of 'https://www.npmjs.com/package/npms-cli' +alias npms="npms search" + +# requires installation of 'https://www.npmjs.com/package/package-menu-cli' +alias pm="package-menu" + +# requires installation of 'https://www.npmjs.com/package/pkg-version-cli' +alias pv="package-version" + +# requires installation of 'https://github.com/sindresorhus/latest-version-cli' +alias lv="latest-version" + +# git aliases +alias gaa="git add ." +alias gd="git --no-pager diff" +alias git-revert="git reset --hard && git clean -df" +alias gs="git status" +alias whoops="git reset --hard && git clean -df" + + +# Create a new directory and enter it +function mkd() { + mkdir -p "$@" && cd "$@" +} + +function md() { + mkdir -p "$@" && cd "$@" +} + +function xtree { + find ${1:-.} -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' +} diff --git a/workspace/composer.json b/workspace/composer.json new file mode 100644 index 0000000..0c1370f --- /dev/null +++ b/workspace/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + + } +} diff --git a/workspace/crontab/laradock b/workspace/crontab/laradock new file mode 100644 index 0000000..c807cf4 --- /dev/null +++ b/workspace/crontab/laradock @@ -0,0 +1 @@ +* * * * * laradock php /var/www/artisan schedule:run >> /dev/null 2>&1 diff --git a/workspace/insecure_id_rsa b/workspace/insecure_id_rsa new file mode 100644 index 0000000..9833744 --- /dev/null +++ b/workspace/insecure_id_rsa @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/workspace/insecure_id_rsa.ppk b/workspace/insecure_id_rsa.ppk new file mode 100644 index 0000000..0c29627 --- /dev/null +++ b/workspace/insecure_id_rsa.ppk @@ -0,0 +1,46 @@ +PuTTY-User-Key-File-2: ssh-rsa +Encryption: none +Comment: imported-openssh-key +Public-Lines: 12 +AAAAB3NzaC1yc2EAAAADAQABAAACAQD0tfQNVXxVjST53ny/5Op7ot+GeIGEGAEn +r9kgYAXK6GqnJ/3UOfWKFxl4gEusLj4hpGrT/GJVx2nIG7d/IaRifJvns+Lak4Wj ++17zyPRF54/mic6a0MAREJH5aTOLuSK+DhnhTUqAt4mfdHpYmBXWdTAXDCg8gP5Q +LdGkdxL9M+GBk4tKiDx1hRfHV9uY6ci0lspQrhnPzzeWLktTA8uWYZlus1gv3SXX +6zVD2+XB6/J7ZarNcK9iHoMLddFggSdnGs6kNLJQe0DAwncdeCQizcdXV2A9O33v +aY/b0A1obUxuoCit629AwyQ9C/71f3rBSrfgUSb1pOVPmhLRJDZenf/NS8FIW194 +/u5slvr1u6fj/iiCYctt0PNg00UAnlybWDDKD3l5e8Kbl16uTw1/5AEc6Wl3aCmt +WYpwRGeue/hnUzOXr9/SjhQLfB+ZCASt83N+u0kV7ni7G5/04z11dqZwkk6x1SAz +WGJnp76piwd4AP2fu8KqNAmWsyEIZmmR5JSGS5i4sGuSGog6rZWop1LwIfNjdOLF +bs+rnF0oOmpgZReo8fH+PmOkq3iHaPQvXO3Cj2d52HVxtHI+n2iKjDu3CzHIP31v +fqsZKHfmoo3ckFW4yfrPcXy0gQswPj0jJUIbKLb6OfuptUsQ5SvkiwWoW4irnO3l +KF9KLo3t7w== +Private-Lines: 28 +AAACADW3YzUyGLLm4sD+t7+fzmEJZaus9DE827QMg8r5iQv7bL34p11Yw69mVq7+ +6p2HIRhdcR3LfwJ5XZ0RiHwdtGnyFH8OG7QDQgi2+ybka8qUhCAFDBcrz51vV7u5 +/hijsR6rFb9BKiOLJmicNucPq2uCGeZVQtfVMP4EsMo7YS23n77D1oWr1imt54RY +otm0J9yMZSjEruHRCNCspNg6Mwx1rCqCr88B6na1KOIWeR7SXk38CTxDihwtunJf +kHBwqWeWmNmuv52vEI2/okoTv0rshN+FTJjkYEaXk36a8vaDV43JFmTnE2rR6ziD +U5osO5QGhMp2xeiSI8wPdCX4nv5EKgL0+4a610IAhTa70KgUB8ommwqH6wZHKuLO +8PmGVLfUXvzOJ/tbm5uL2y6kDp60lhsr6bBwOwmCa1z6rnXGwfdPU4O9Fxu3O9gU +TwnO5yE3ho+2xj5b/BpMNUN3KYW89KxiNfsGWrd+emDa4kq3NYQhAT6tjuALes2g +1IThgVsgCNMziQi4gWeRWrejYGZDtYeNvdRJ6WEXEE8nrucEwtLdKFcuPKK7bZTx +HEpxs4qkSKa4IpFJUR2mw2emzeHbLxzY89ZZLssbMCIJ6kuNfCoct7gv9y/HxL0p +lFdCd5qSQpOiC5Xs32nQ72muMlyRviOj3jWJoN6lVkgdu4/xAAABAQD68AEIqefw +8DhFaLE9wjJuPqJCkc/O3q5nG/eKXcihjcCebb4QduWgT1VwfemFAQChNCzF36Sh +y0cep0mLpjE5OaaweXeOKUDeQqDQDtGKfvTYM5sLdz1VI57tX2uLM9CcV7CTIM+a +k6hbdvLQNi/QMW0DzM1+BKQV6pkSgGdDIyib2UFhwn1UquJR90K8+CHdlX9LMR9y +npm0wtG+0RbM7HvlzDDqQu9S5R6RCX/tRuvfo7P7vUHrpU3n251Itg8Bv6y3OFtB +JTsts0pouXKAFESqdN5eP5UJcaevE5FlLUV+o726dvGD8VgEMEy3/aNe3oSXPrZi +CMMS0aNxMD+tAAABAQD5pcpbrO58MbzwM+xfmmyXsK7YXCGrWPlQsa+mS65xpWyy +c42YWqLiMfssRlWMRweDoaEOobK1ppSvUqFdVa22fSibapkgoWDsFHsTk9H0cq4i +DR2jryk9//kwpPpMqrWAHWXwHjzV1Vzy2ZoeMdsvP1SUh/y4ttd8/URjIAMConjG +1A206Pu7PSTlrIiBZTqxwYLcSUtPN9a6xc8nJYU1XnAC0IjRe7hT8h007SsuIEjw +FILxULgxrD9rVljWeWJcF+Oa0neLsDazfr5gbXW9eaLYEoVdrzQEzv4v3Om3F/Y+ +/sfVi/LHht9VnbEJMsLKO1SPjAYaSYcxMLwzSCeLAAABAQC/gAQCLbqo4FylEVST +3IP8rxA5RGbLRDJ2j+ywEzOuy2ufGI/CfxeG/+jF5E0/uBRm8rrnMmaJaNr42hF4 +r5kjNM5uficOVucU3FluQqae73zfUFeAQBft+4tTH+sR8jo+LvEBGinW1wHv7di4 +5I3at2HMjMtZgWPPIqCBIay0UKysW4eEwXYC9cWg9kPcb2y56zadrKxGZqHOPezH +2A1iOuzpvw0mG0xHUY4Eg5aZxcWB1jMf7bbxTAAMxQiBnw0bPEf5zpWzeKL0obxT +/NhCgmV7/Fqs0GCbXEEgJo0zAVemALOAYRW3pYvt8FoCOopo4ADyfmdWlAvzCy46 +k7Fo +Private-MAC: 4ea4cef3fa63f1068dcd512c477c61dd7e85bb38 diff --git a/workspace/insecure_id_rsa.pub b/workspace/insecure_id_rsa.pub new file mode 100644 index 0000000..d612ec1 --- /dev/null +++ b/workspace/insecure_id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD0tfQNVXxVjST53ny/5Op7ot+GeIGEGAEnr9kgYAXK6GqnJ/3UOfWKFxl4gEusLj4hpGrT/GJVx2nIG7d/IaRifJvns+Lak4Wj+17zyPRF54/mic6a0MAREJH5aTOLuSK+DhnhTUqAt4mfdHpYmBXWdTAXDCg8gP5QLdGkdxL9M+GBk4tKiDx1hRfHV9uY6ci0lspQrhnPzzeWLktTA8uWYZlus1gv3SXX6zVD2+XB6/J7ZarNcK9iHoMLddFggSdnGs6kNLJQe0DAwncdeCQizcdXV2A9O33vaY/b0A1obUxuoCit629AwyQ9C/71f3rBSrfgUSb1pOVPmhLRJDZenf/NS8FIW194/u5slvr1u6fj/iiCYctt0PNg00UAnlybWDDKD3l5e8Kbl16uTw1/5AEc6Wl3aCmtWYpwRGeue/hnUzOXr9/SjhQLfB+ZCASt83N+u0kV7ni7G5/04z11dqZwkk6x1SAzWGJnp76piwd4AP2fu8KqNAmWsyEIZmmR5JSGS5i4sGuSGog6rZWop1LwIfNjdOLFbs+rnF0oOmpgZReo8fH+PmOkq3iHaPQvXO3Cj2d52HVxtHI+n2iKjDu3CzHIP31vfqsZKHfmoo3ckFW4yfrPcXy0gQswPj0jJUIbKLb6OfuptUsQ5SvkiwWoW4irnO3lKF9KLo3t7w== insecure@laradock diff --git a/workspace/xdebug.ini b/workspace/xdebug.ini new file mode 100644 index 0000000..dfe2f10 --- /dev/null +++ b/workspace/xdebug.ini @@ -0,0 +1,13 @@ +; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini) + +xdebug.remote_autostart=0 +xdebug.remote_enable=0 +xdebug.remote_connect_back=0 +xdebug.cli_color=0 +xdebug.profiler_enable=0 +xdebug.remote_handler=dbgp +xdebug.remote_mode=req + +xdebug.remote_port=9000 +xdebug.remote_host=dockerhost +xdebug.idekey=PHPSTORM diff --git a/xdebugPhpFpm b/xdebugPhpFpm new file mode 100644 index 0000000..5af6eac --- /dev/null +++ b/xdebugPhpFpm @@ -0,0 +1,101 @@ +#! /bin/bash + +# NOTE: At the moment, this has only been confirmed to work with PHP 7 + + +# Grab full name of php-fpm container +PHP_FPM_CONTAINER=$(docker-compose ps | grep php-fpm | cut -d " " -f 1) + + +# Grab OS type +if [[ "$(uname)" == "Darwin" ]]; then + OS_TYPE="OSX" +else + OS_TYPE=$(expr substr $(uname -s) 1 5) +fi + + +xdebug_status () +{ + echo 'xDebug status' + + # If running on Windows, need to prepend with winpty :( + if [[ $OS_TYPE == "MINGW" ]]; then + winpty docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v' + + else + docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v' + fi + +} + + +xdebug_start () +{ + echo 'Start xDebug' + + # And uncomment line with xdebug extension, thus enabling it + ON_CMD="sed -i 's/^;zend_extension=/zend_extension=/g' \ + /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini" + + + # If running on Windows, need to prepend with winpty :( + if [[ $OS_TYPE == "MINGW" ]]; then + winpty docker exec -it $PHP_FPM_CONTAINER bash -c "${ON_CMD}" + docker restart $PHP_FPM_CONTAINER + winpty docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v' + + else + docker exec -it $PHP_FPM_CONTAINER bash -c "${ON_CMD}" + docker restart $PHP_FPM_CONTAINER + docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v' + fi +} + + +xdebug_stop () +{ + echo 'Stop xDebug' + + # Comment out xdebug extension line + OFF_CMD="sed -i 's/^zend_extension=/;zend_extension=/g' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini" + + + # If running on Windows, need to prepend with winpty :( + if [[ $OS_TYPE == "MINGW" ]]; then + # This is the equivalent of: + # winpty docker exec -it laradock_php-fpm_1 bash -c 'bla bla bla' + # Thanks to @michaelarnauts at https://github.com/docker/compose/issues/593 + winpty docker exec -it $PHP_FPM_CONTAINER bash -c "${OFF_CMD}" + docker restart $PHP_FPM_CONTAINER + #docker-compose restart php-fpm + winpty docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v' + + else + docker exec -it $PHP_FPM_CONTAINER bash -c "${OFF_CMD}" + # docker-compose restart php-fpm + docker restart $PHP_FPM_CONTAINER + docker exec -it $PHP_FPM_CONTAINER bash -c 'php -v' + fi +} + + +case $@ in + stop|STOP) + xdebug_stop + ;; + start|START) + xdebug_start + ;; + status|STATUS) + xdebug_status + ;; + *) + echo "xDebug [Stop | Start | Status] in the ${PHP_FPM_CONTAINER} container." + echo "xDebug must have already been installed." + echo "Usage:" + echo " ./xdebugPhpFpm stop|start|status" + +esac + +exit 1 |
