private function write($directory): void
    {
        $dockerfile = [];
        // Insert a FROM instruction if the file does not start with one.
        if (empty($this->commands) || $this->commands[0]['type'] !== 'FROM') {
            $dockerfile[] = 'FROM base';
        }
        foreach ($this->commands as $command) {
            switch ($command['type']) {
                case 'FROM':
                    $dockerfile[] = 'FROM '.$command['image'];
                    break;
                case 'RUN':
                    $dockerfile[] = 'RUN '.$command['command'];
                    break;
                case 'ADD':
                    $dockerfile[] = 'ADD '.$this->getFile($directory, $command['content']).' '.$command['path'];
                    break;
                case 'ADDFILE':
                    $dockerfile[] = 'ADD '.$this->getFileFromDisk($directory, $command['file']).' '.$command['path'];
                    break;
                case 'ADDSTREAM':
                    $dockerfile[] = 'ADD '.$this->getFileFromStream($directory, $command['stream']).' '.$command['path'];
                    break;
                case 'COPY':
                    $dockerfile[] = 'COPY '.$command['from'].' '.$command['to'];
                    break;
                case 'ENV':
                    $dockerfile[] = 'ENV '.$command['name'].' '.$command['value'];
                    break;
                case 'WORKDIR':
                    $dockerfile[] = 'WORKDIR '.$command['workdir'];
                    break;
                case 'EXPOSE':
                    $dockerfile[] = 'EXPOSE '.$command['port'];
                    break;
                case 'VOLUME':
                    $dockerfile[] = 'VOLUME '.$command['volume'];
                    break;
                case 'USER':
                    $dockerfile[] = 'USER '.$command['user'];
                    break;
            }
        }

        if (!empty($this->entrypoint)) {
            $dockerfile[] = 'ENTRYPOINT '.$this->entrypoint;
        }

        if (!empty($this->command)) {
            $dockerfile[] = 'CMD '.$this->command;
        }

        $this->fs->dumpFile($directory.DIRECTORY_SEPARATOR.'Dockerfile', \implode(PHP_EOL, $dockerfile));
    }
private function write($directory): void
    {
        $dockerfile = [];
        // Insert a FROM instruction if the file does not start with one.
        if (empty($this->commands) || $this->commands[0]['type'] !== 'FROM') {
            $dockerfile[] = 'FROM base';
        }
        foreach ($this->commands as $command) {
            switch ($command['type']) {
                case 'FROM':
                    $dockerfile[] = 'FROM '.$command['image'];
                    break;
                case 'RUN':
                    $dockerfile[] = 'RUN '.$command['command'];
                    break;
                case 'ADD':
                    $dockerfile[] = 'ADD '.$this->getFile($directory, $command['content']).' '.$command['path'];
                    break;
                case 'ADDFILE':
                    $dockerfile[] = 'ADD '.$this->getFileFromDisk($directory, $command['file']).' '.$command['path'];
                    break;
                case 'ADDSTREAM':
                    $dockerfile[] = 'ADD '.$this->getFileFromStream($directory, $command['stream']).' '.$command['path'];
                    break;
                case 'COPY':
                    $dockerfile[] = 'COPY '.$command['from'].' '.$command['to'];
                    break;
                case 'ENV':
                    $dockerfile[] = 'ENV '.$command['name'].' '.$command['value'];
                    break;
                case 'WORKDIR':
                    $dockerfile[] = 'WORKDIR '.$command['workdir'];
                    break;
                case 'EXPOSE':
                    $dockerfile[] = 'EXPOSE '.$command['port'];
                    break;
                case 'VOLUME':
                    $dockerfile[] = 'VOLUME '.$command['volume'];
                    break;
                case 'USER':
                    $dockerfile[] = 'USER '.$command['user'];
                    break;
            }
        }

        if (!empty($this->entrypoint)) {
            $dockerfile[] = 'ENTRYPOINT '.$this->entrypoint;
        }

        if (!empty($this->command)) {
            $dockerfile[] = 'CMD '.$this->command;
        }

        $this->fs->dumpFile($directory.DIRECTORY_SEPARATOR.'Dockerfile', \implode(PHP_EOL, $dockerfile));
    }
private function write ( $ directory ) : void { $ dockerfile = [ ] ; // Insert a FROM instruction if the file does not start with one. if ( empty ( $ this -> commands ) || $ this -> commands [ 0 ] [ 'type' ] !== 'FROM' ) { $ dockerfile [ ] = 'FROM base' ; } foreach ( $ this -> commands as $ command ) { switch ( $ command [ 'type' ] ) { case 'FROM' : $ dockerfile [ ] = 'FROM ' . $ command [ 'image' ] ; break ; case 'RUN' : $ dockerfile [ ] = 'RUN ' . $ command [ 'command' ] ; break ; case 'ADD' : $ dockerfile [ ] = 'ADD ' . $ this -> getFile ( $ directory , $ command [ 'content' ] ) . ' ' . $ command [ 'path' ] ; break ; case 'ADDFILE' : $ dockerfile [ ] = 'ADD ' . $ this -> getFileFromDisk ( $ directory , $ command [ 'file' ] ) . ' ' . $ command [ 'path' ] ; break ; case 'ADDSTREAM' : $ dockerfile [ ] = 'ADD ' . $ this -> getFileFromStream ( $ directory , $ command [ 'stream' ] ) . ' ' . $ command [ 'path' ] ; break ; case 'COPY' : $ dockerfile [ ] = 'COPY ' . $ command [ 'from' ] . ' ' . $ command [ 'to' ] ; break ; case 'ENV' : $ dockerfile [ ] = 'ENV ' . $ command [ 'name' ] . ' ' . $ command [ 'value' ] ; break ; case 'WORKDIR' : $ dockerfile [ ] = 'WORKDIR ' . $ command [ 'workdir' ] ; break ; case 'EXPOSE' : $ dockerfile [ ] = 'EXPOSE ' . $ command [ 'port' ] ; break ; case 'VOLUME' : $ dockerfile [ ] = 'VOLUME ' . $ command [ 'volume' ] ; break ; case 'USER' : $ dockerfile [ ] = 'USER ' . $ command [ 'user' ] ; break ; } } if ( ! empty ( $ this -> entrypoint ) ) { $ dockerfile [ ] = 'ENTRYPOINT ' . $ this -> entrypoint ; } if ( ! empty ( $ this -> command ) ) { $ dockerfile [ ] = 'CMD ' . $ this -> command ; } $ this -> fs -> dumpFile ( $ directory . DIRECTORY_SEPARATOR . 'Dockerfile' , \ implode ( PHP_EOL , $ dockerfile ) ) ; }
Write docker file and associated files in a directory.

@param string $directory Target directory

@void
Write docker file and associated files in a directory .