Giter Club home page Giter Club logo

pilothouse's Introduction

Pilothouse

Pilothouse is a command line app for managing a Docker-based LEMP local development environment.

Pilothouse is completely free and open source, and features:

  • Unlimited local sites
  • Laravel and WordPress support built-in
  • Seamless Composer and WP-CLI integration
  • Multiple PHP versions, configurable on a per-site basis
  • Automated hosts file management
  • SSL automatically available for all local sites
  • Remote PHP debugging using Xdebug

...and much more!

Pilothouse is currently only supported on macOS, but support for Linux and Windows will be coming soon!

What's Inside

  • Nginx
  • PHP 5.6, 7.0, 7.1, 7.2, 7.3, and 7.4
  • MariaDB
  • phpMyAdmin
  • Redis
  • Xdebug
  • Composer
  • WP-CLI
  • MailCatcher

Documentation

Full documentation is available in the Wiki. Start by reading the Installation, Services, Commands, and Third Party Software Helpers pages.

Meta

Pilothouse is open source software licensed under the GPLv2. Pilothouse was created and is maintained by Philip Newcomer. Props to these awesome contributors!

pilothouse's People

Contributors

aaronholbrook avatar faison avatar jacobarriola avatar philipnewcomer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pilothouse's Issues

Allow customization via single user controllable file

Allow tweaking via a single user controllable file to customize some instances that the default settings may not provide for.

This touches a number of items and is the basis to allow them to be possible, including:

  • #25 - allow customization of php.ini max sizes
  • #23 - support multiple php versions
  • #11 - allow customizable defaults for wp-config
  • #9 - add ability to add custom php packages
  • #3 - allow custom default user/pass for wp

running wp on host machine gives me error

❯ wp
less: unrecognized option: r
BusyBox v1.24.2 (2016-08-12 14:38:34 GMT) multi-call binary.

Usage: less [-EIMmNSh~] [FILE]...

View FILE (or stdin) one screenful at a time

	-E	Quit once the end of a file is reached
	-I	Ignore case in all searches
	-M,-m	Display status line with line numbers
		and percentage through the file
	-N	Prefix line number to each line
	-S	Truncate long lines
	-~	Suppress ~s displayed past EOF```

Customize value: php memory size

Currently working on a project that requires a large overhead of memory available. Need to be able to set this pretty high (higher than we'd want for a default, I'm sure)

Allow php.ini max sizes to be higher

32m might be appropriate for prod for most sites, but may be a bit low for what we're doing on dev.

I would prefer a higher default or a way to change without forking wpdocker - a custom settings file seems to be a recurring necessity here to be able to customize these types of things

Install Memcache PHP extension and use by default instead of Memcached

Memcached is not fully compatible with PHP 7 yet, although it works fine for some sites. However, on one of my local sites, enabling object caching with the PECL Memcached extension brought the site to a crawl. The old Memcache extension is less desirable for object caching, but a PHP7-compatible port exists so that's what I'll be using by default instead of Memcached. The Memcached extension will still be available and can be used on an opt-in basis.

Issue with InnoDB redo log size.

Putting this here in case it's a setup issue - I'm importing a rather large database at around 4.0 Gb and got this error that I'm looking into. Perhaps it's a system level issue, but figured I'd point this out in case anyone else has run into this problem:

2017-02-25 23:07:21 140083114277632 [ERROR] InnoDB: The total blob data length (10709816) is greater than 10% of the total redo log size (100663296). Please increase total redo log size.

After logging into mysql and running the following, it looks like we have approximately 268 Mb allocated here.

pilothouse compose exec mysql /usr/bin/mysql -u root -proot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.1.21-MariaDB-1~jessie mariadb.org binary distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
|                 268435456 |
+---------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT @@innodb_buffer_pool_instances;
+--------------------------------+
| @@innodb_buffer_pool_instances |
+--------------------------------+
|                              8 |
+--------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT @@innodb_buffer_pool_chunk_size;
ERROR 1193 (HY000): Unknown system variable 'innodb_buffer_pool_chunk_size'

The innodb_buffer_pool_chunk_size not existing seems like it could be an issue too, but I'm not sure. I'll post more if I figure out a solution here.

ERROR: No container found for php_1

On my first run of dockerbox up, I get stuck with the error No container found for php_1 repeating for several minutes until I finally cancel the run. Just before that is a problem with mailcatcher, but I don't know if that's the cause or just a red herring.

Here's the messages just before and after the error starts:

ERROR:  Could not find a valid gem 'mailcatcher' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
ERROR: Service 'mailcatcher' failed to build: The command '/bin/sh -c apk add --no-cache --virtual .build-deps     build-base curl ruby-dev && apk add --no-cache curl libstdc++ ruby ruby-json sqlite-dev && gem install mailcatcher --no-ri --no-rdoc && apk del .build-deps' returned a non-zero code: 2
ERROR: No container found for php_1
ERROR: No container found for php_1
Waiting for MySQL to become ready... ERROR: No container found for php_1
ERROR: No container found for php_1

Sync error logs to the host

We should be able to view error logs without having to open a shell in the host. Add a log directory in the dockerbox root where logs can be synced from the containers.

Using XDebug for a CRON

This may be a misunderstanding of use on my part: I'm unable to get breakpoints to trigger for XDebug when the code I'm running is executed on a CRON.

I figured this is due to the XDebug setup using cookies that do not exist for the CRON when it's running in the background. Is there a setup that can be implemented to enable this, similar to how the wp-cli command needs a flag; something that can be set at the system level?

Add static file directive to nginx config

This should be added to the nginx shared.conf.inc so that it doesn't pass along requests to static files to php (which prevents additional pointless processing for php, etc):

location ~* \.(?:ico|css|js|gif|jpe?g|png|svg|woff|ttf|eot)$ {
    expires 6h;
    add_header Pragma public;
    add_header Cache-Control "public";
}```

Rename project

I need to change the name of the project. http://wpdocker.com/ is already an established commercial entity, and I don't want to cause confusion with that, or to be using a name they may have trademarked.

When I originally named the project, I did a Google search for wpdocker and didn't see any relevant results, so I assumed no one was using the name. What I didn't notice was that Google oh-so-helpfully changed my search query to "wplocker", thus I didn't see wpdocker.com in the search results.
screen shot 2017-01-05 at 8 14 14 am

So, I've settled on "DockerBox" as the new name of the project. This more accurately reflects the goal of the project to be a more generic local development environment using Docker, useful not only for WordPress projects, but general PHP projects as well.

As part of this ticket, I will be updating all instances of wpdocker in the codebase to dockerbox. I own the DockerBox GitHub organization, and will be moving this repository to https://github.com/dockerbox/dockerbox shortly. GitHub will redirect the old repository URLs, and all Git history, issues, etc. will be retained. Users will still be able to clone, fetch, and push to https://github.com/philipnewcomer/wpdocker as GitHub will redirect those requests to the new location (https://help.github.com/articles/renaming-a-repository/).

Add ability to enable xdebug via $_GET parameter request

It would be nice to be able to enable xdebug processing with a simple ?xdebug=on flag to the request URL.

If the site is giving a 500 error then there's no option to use set a cookie yet and it would be nice to use xdebug to track down what the issue is.

Trying to start up Pilothouse and getting an nginx error

I have no other machines running but I'm getting this error:

ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint pilothouse_nginx_1 (b4652d1471ea2aa201116ffcb3d17d3ad26456541b86838a2350be64c89bd2a8): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)

Any ideas?

Use containerized Composer and WP-CLI

Composer should be run inside a PHP container, instead of on the host. This will make the entire stack more portable, and eliminate issues with a package requiring a PHP version higher than what is currently installed on the host.

Will also help with cross-platform compatibility by not requiring PHP to be installed on Windows and Linux hosts where it is not available by default.

WP-CLI should be actually installed and managed in/by the container instead of being copied from the host where it is managed via Composer.

php error on default load

looking for advanced cache by default causes some php warnings:

Warning: include(/var/www/html/site/htdocs/wp-content/advanced-cache.php): failed to open stream: No such file or directory in /var/www/html/site/htdocs/wp-settings.php on line 86

Warning: include(): Failed opening '/var/www/html/site/htdocs/wp-content/advanced-cache.php' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/site/htdocs/wp-settings.php on line 86

Fix Terminal Formatting for WP-CLI Commands

The fix for #5 had the side effect of removing formatting (colors, tables, etc.) for wp-cli command output, due to the removal of docker's pseudo terminal emulation, or something like that. We need to get that formatting back without reverting #5.

Ensure new line in hosts file

To avoid potential conflicts, please ensure there's an empty line prior to adding to the hosts file, and that each entry gets its own line.

When my first site was added to /etc/hosts, it was appended to the last line in the file. Since another program edited the hosts file and the line ended with ##, it commented out the new host entry that dockerbox created.

## Local by Flywheel - End ##127.0.0.1 mdub.dev #dockerbox

should be

## Local by Flywheel - End ##

127.0.0.1 mdub.dev #dockerbox

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.