Skip to content

Commit dbb293d

Browse files
committed
Fix tests
1 parent 56ccc71 commit dbb293d

16 files changed

+132
-128
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ See all available options, and their supported values, by running `php artisan d
5050
* `-p, --php-version` - PHP version for Docker image
5151
* `-e, --php-extensions` - PHP extensions (comma-separated) to include in Docker image
5252
* `-o, --optimize` - Run `php artisan optimize` on container start
53+
* `-a, --optimize` - Run `php artisan optimize` on container start
5354
* `-m, --node-package-manager` - Install Node dependencies using NPM or Yarn
5455
* `-b, --node-build-tool` - Run Vite.js or Laravel Mix build step
5556

docker/nginx.Dockerfile

Lines changed: 0 additions & 22 deletions
This file was deleted.

docker/php.Dockerfile

Lines changed: 0 additions & 40 deletions
This file was deleted.

docker/template/nginx.dockerfile.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{# import node partial, exposed as "node" layer #}
2-
{% include 'partials/node.dockerfile.twig' %}
2+
{% include 'partials/node-build-assets.dockerfile.twig' %}
33

4-
FROM nginx:1-alpine
4+
FROM nginx:1{{ alpine ? '-alpine' : '' }}
55

66
WORKDIR /app/public
77

docker/template/partials/node.dockerfile.twig renamed to docker/template/partials/node-build-assets.dockerfile.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% if node_package_manager %}
22
# built frontend assets with {{ node_package_manager }} and {{ node_build_tool }}
3-
FROM node:lts-alpine AS node
3+
FROM node:lts{{ alpine ? '-alpine' : '' }} AS node
44
WORKDIR /app
55

66
{# install node dependencies #}

docker/template/php.dockerfile.twig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Composer installation
2-
FROM php:{{ php_version }}-fpm-alpine AS composer
2+
FROM php:{{ php_version }}-fpm{{ alpine ? '-alpine' : '' }} AS composer
33
WORKDIR /app
44

55
## install composer dependencies
@@ -9,10 +9,10 @@ COPY / /app
99
RUN composer install --optimize-autoloader --no-dev
1010

1111
{# import node partial, exposed as "node" layer #}
12-
{% include 'partials/node.dockerfile.twig' %}
12+
{% include 'partials/node-build-assets.dockerfile.twig' %}
1313

1414
# build php-fpm image
15-
FROM php:{{ php_version }}-fpm-alpine
15+
FROM php:{{ php_version }}-fpm{{ alpine ? '-alpine' : '' }}
1616
WORKDIR /app
1717

1818
# install required extensions

src/Commands/DockerGenerateCommand.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace BlameButton\LaravelDockerBuilder\Commands;
44

5+
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\AlpineQuestion;
56
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\ArtisanOptimizeQuestion;
67
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodeBuildTool;
78
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodePackageManager;
@@ -31,6 +32,7 @@ public function handle(): int
3132
phpVersion: $phpVersion = app(PhpVersionQuestion::class)->getAnswer($this),
3233
phpExtensions: app(PhpExtensionsQuestion::class)->getAnswer($this, $phpVersion),
3334
artisanOptimize: app(ArtisanOptimizeQuestion::class)->getAnswer($this),
35+
alpine: app(AlpineQuestion::class)->getAnswer($this),
3436
nodePackageManager: $nodePackageManager = app(NodePackageManagerQuestion::class)->getAnswer($this),
3537
nodeBuildTool: $nodePackageManager ? app(NodeBuildToolQuestion::class)->getAnswer($this) : false,
3638
);
@@ -72,6 +74,9 @@ public function printConfigurationTable(Configuration $config): void
7274
['Artisan Optimize',
7375
'<comment>'.json_encode($config->isArtisanOptimize()).'</comment>',
7476
],
77+
['Alpine images',
78+
'<comment>'.json_encode($config->isAlpine()).'</comment>',
79+
],
7580
['Node Package Manager',
7681
NodePackageManager::name($config->getNodePackageManager()),
7782
],
@@ -95,6 +100,7 @@ private function saveDockerfiles(Configuration $config): void
95100
'php_version' => $config->getPhpVersion(),
96101
'php_extensions' => implode(' ', $config->getPhpExtensions()),
97102
'artisan_optimize' => $config->isArtisanOptimize(),
103+
'alpine' => $config->isAlpine(),
98104
'node_package_manager' => $config->getNodePackageManager(),
99105
'node_build_tool' => $config->getNodeBuildTool(),
100106
];
@@ -144,14 +150,15 @@ protected function getOptions(): array
144150
mode: InputOption::VALUE_NEGATABLE,
145151
description: 'Add "php artisan optimize" to entrypoint',
146152
),
147-
new InputOption(
153+
new InputOption( // TODO: implement opcache extension
148154
name: 'opcache',
149155
mode: InputOption::VALUE_NEGATABLE,
150156
description: 'Add "opcache" extension and configure it',
151157
default: true,
152158
),
153159
new InputOption(
154160
name: 'alpine',
161+
shortcut: 'a',
155162
mode: InputOption::VALUE_NEGATABLE,
156163
description: 'Use Alpine Linux based images',
157164
default: true,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions;
4+
5+
use BlameButton\LaravelDockerBuilder\Commands\BaseCommand;
6+
7+
class AlpineQuestion extends BaseQuestion
8+
{
9+
public function getAnswer(BaseCommand $command): bool
10+
{
11+
if ($command->option('alpine') === false) {
12+
return false;
13+
}
14+
15+
if ($command->option('alpine') || $command->option('detect')) {
16+
return true;
17+
}
18+
19+
return $command->confirm(
20+
question: 'Do you want to use "Alpine Linux" based images?',
21+
default: true
22+
);
23+
}
24+
}

src/Commands/GenerateQuestions/ArtisanOptimizeQuestion.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions;
44

55
use BlameButton\LaravelDockerBuilder\Commands\BaseCommand;
6-
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\ArtisanOptimize;
76

87
class ArtisanOptimizeQuestion extends BaseQuestion
98
{
@@ -13,12 +12,9 @@ public function getAnswer(BaseCommand $command): bool
1312
return true;
1413
}
1514

16-
$choice = $command->choice(
15+
return $command->confirm(
1716
question: 'Do you want to run "php artisan optimize" when the image boots?',
18-
choices: ArtisanOptimize::values(),
19-
default: ArtisanOptimize::YES,
17+
default: true,
2018
);
21-
22-
return ArtisanOptimize::YES === $choice;
2319
}
2420
}

src/Commands/GenerateQuestions/Choices/ArtisanOptimize.php

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)