public function start($argv = null) { // workaround for RubbishThorClone bug if ($argv !== null) { parent::start($argv); return; } $this->whippet_init(); # Ensure data container exists exec('docker run --label=com.dxw.whippet=true --label=com.dxw.data=true --name=' . escapeshellarg($this->mysql_data) . ' -v /var/lib/mysql mysql /bin/true 2>/dev/null'); # Stop/delete existing containers echo "Stopping already-running containers\n"; $this->_stop(); $output = null; $return = null; # Start other containers exec('docker run -d --label=com.dxw.whippet=true --label=com.dxw.data=false --name=whippet_mailcatcher -p 1080:1080 schickling/mailcatcher 2>/dev/null', $output, $return); if ($return !== 0) { echo "Mailcatcher container failed to start\n"; exit(1); } exec('docker run -d --label=com.dxw.whippet=true --label=com.dxw.data=false --name=whippet_beanstalk schickling/beanstalkd 2>/dev/null', $output, $return); if ($return !== 0) { echo "Beanstalk container failed to start\n"; exit(1); } exec('docker run -d --label=com.dxw.whippet=true --label=com.dxw.data=false --name=whippet_mysql --volumes-from=' . escapeshellarg($this->mysql_data) . ' -e MYSQL_DATABASE=wordpress -e MYSQL_ROOT_PASSWORD=foobar mysql 2>/dev/null', $output, $return); if ($return !== 0) { echo "MySQL container failed to start\n"; exit(1); } exec('docker run -d --label=com.dxw.whippet=true --label=com.dxw.data=false --name=whippet_wordpress -v ' . escapeshellarg($this->project_dir) . ':/usr/src/app -v ' . escapeshellarg($this->project_dir) . '/wp-content:/var/www/html/wp-content -p 80:80 --link=whippet_mysql:mysql --link=whippet_mailcatcher:mailcatcher --link=whippet_beanstalk:beanstalk -e PROJECT_ID=' . escapeshellarg(md5($this->project_dir)) . ' thedxw/whippet-wordpress 2>/dev/null', $output, $return); if ($return !== 0) { echo "WordPress container failed to start\n"; exit(1); } echo "Started whippet containers\n"; }
public function __construct() { parent::__construct(); $this->factory = new \Dxw\Whippet\Factory(); $this->projectDirectory = \Dxw\Whippet\ProjectDirectory::find(getcwd()); }