Skip to content

Commit f2a87b6

Browse files
authored
[php] Fix Swoole and faster docker builds (#9169)
* Fix Symfony Swoole * Fix Laravel Swoole * Fix Simps Swoole * Fix Laravel Laravels Swoole variant * Fix Lumen Swoole variants * Fix MixPHP Swoole * Fix Ubiquity Swoole variants
1 parent 57f2f11 commit f2a87b6

11 files changed

+53
-142
lines changed
Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN pecl install swoole > /dev/null && \
4-
docker-php-ext-enable swoole
5-
RUN docker-php-ext-install pdo_mysql pcntl opcache > /dev/null
3+
RUN docker-php-ext-install pcntl opcache curl > /dev/null
64

75
RUN echo "opcache.enable_cli=1" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
86
RUN echo "opcache.jit=1205" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
97
RUN echo "opcache.jit_buffer_size=128M" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
108

11-
ADD ./ /laravel
129
WORKDIR /laravel
10+
COPY --link . .
1311

1412
RUN mkdir -p /laravel/bootstrap/cache /laravel/storage/logs /laravel/storage/framework/sessions /laravel/storage/framework/views /laravel/storage/framework/cache
15-
RUN chmod -R 777 /laravel
1613

17-
RUN apt-get update > /dev/null && \
18-
apt-get install -yqq git unzip > /dev/null
19-
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');"
20-
RUN mv composer.phar /usr/local/bin/composer
21-
22-
COPY deploy/laravel-s/composer.json ./
14+
COPY --link deploy/laravel-s/composer.json .
2315

2416
RUN echo "LARAVELS_LISTEN_IP=0.0.0.0" >> .env
2517
RUN echo "LARAVELS_LISTEN_PORT=8080" >> .env
@@ -30,4 +22,4 @@ RUN php artisan laravels publish
3022

3123
EXPOSE 8080
3224

33-
CMD php bin/laravels start
25+
ENTRYPOINT [ "php", "bin/laravels", "start" ]
Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,23 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN pecl install swoole > /dev/null && \
4-
docker-php-ext-enable swoole
5-
RUN docker-php-ext-install pdo_mysql pcntl opcache > /dev/null
3+
RUN docker-php-ext-install pcntl opcache curl > /dev/null
64

75
RUN echo "opcache.enable_cli=1" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
86
RUN echo "opcache.jit=1205" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
97
RUN echo "opcache.jit_buffer_size=128M" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
108

11-
ADD ./ /laravel
129
WORKDIR /laravel
10+
COPY --link . .
1311

1412
RUN mkdir -p /laravel/bootstrap/cache /laravel/storage/framework/sessions /laravel/storage/framework/views /laravel/storage/framework/cache
15-
RUN chmod -R 777 /laravel
1613

17-
RUN apt-get update -yqq > /dev/null && \
18-
apt-get install -yqq git unzip > /dev/null
19-
20-
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');"
21-
RUN mv composer.phar /usr/local/bin/composer
22-
23-
COPY deploy/swoole/composer.json ./
14+
COPY --link deploy/swoole/composer.json .
2415

2516
RUN echo "APP_SWOOLE=true" >> .env
2617

2718
RUN composer install -a --no-dev --quiet
2819
RUN php artisan optimize
2920

30-
3121
EXPOSE 8080
3222

33-
CMD php artisan swoole:http start
23+
ENTRYPOINT [ "php", "artisan", "swoole:http", "start" ]
Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN pecl install swoole > /dev/null && \
4-
docker-php-ext-enable swoole
5-
RUN docker-php-ext-install pdo_mysql pcntl opcache > /dev/null
3+
RUN docker-php-ext-install pcntl opcache curl > /dev/null
64

75
RUN echo "opcache.enable_cli=1" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
86
#RUN echo "opcache.jit=1205" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
97
#RUN echo "opcache.jit_buffer_size=128M" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
108

11-
ADD ./ /lumen
129
WORKDIR /lumen
10+
ADD --link . .
1311

1412
RUN mkdir -p /lumen/bootstrap/cache /lumen/storage/logs /lumen/storage/framework/sessions /lumen/storage/framework/views /lumen/storage/framework/cache
1513
RUN chmod -R 777 /lumen
1614

17-
RUN apt-get update > /dev/null && \
18-
apt-get install -yqq git unzip > /dev/null
19-
RUN php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');"
20-
RUN mv composer.phar /usr/local/bin/composer
21-
2215
COPY deploy/laravel-s/composer.json ./
2316

2417
RUN echo "LARAVELS_LISTEN_IP=0.0.0.0" >> .env
@@ -29,4 +22,4 @@ RUN php artisan laravels publish
2922

3023
EXPOSE 8080
3124

32-
CMD php bin/laravels start
25+
ENTRYPOINT [ "php", "bin/laravels", "start" ]
Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,21 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN pecl install swoole > /dev/null && \
4-
docker-php-ext-enable swoole
3+
RUN docker-php-ext-install pcntl opcache curl > /dev/null
54

6-
RUN docker-php-ext-install pdo_mysql > /dev/null
7-
8-
ADD ./ /lumen
95
WORKDIR /lumen
10-
COPY deploy/swoole/php.ini /usr/local/etc/php/
11-
12-
RUN mkdir -p /lumen/storage/framework/sessions
13-
RUN mkdir -p /lumen/storage/framework/views
14-
RUN mkdir -p /lumen/storage/framework/cache
15-
16-
RUN chmod -R 777 /lumen
6+
ADD --link . .
177

18-
# Install composer using the installation method documented at https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md
19-
# This method was chosen because composer is not part of the apt repositories that are in the default PHP 7.2 docker image
20-
# Adding alternate apt php repos can potentially cause problems with extension compatibility between the php build from the docker image and the alternate php build
21-
# An additional benefit of this method is that the correct version of composer will be used for the environment and version of the php system in the docker image
22-
RUN deploy/swoole/install-composer.sh
8+
COPY --link deploy/swoole/php.ini /usr/local/etc/php/
239

24-
RUN apt-get update -yqq > /dev/null && \
25-
apt-get install -yqq git unzip > /dev/null
10+
RUN mkdir -p /lumen/storage/framework/sessions /lumen/storage/framework/views /lumen/storage/framework/cache
2611

2712
COPY deploy/swoole/composer* ./
28-
RUN php composer.phar install --optimize-autoloader --classmap-authoritative --no-dev --quiet
13+
RUN composer install --optimize-autoloader --classmap-authoritative --no-dev --quiet
2914

3015
RUN echo "APP_SWOOLE=true" >> .env
3116

3217
RUN chmod -R 777 /lumen
3318

3419
EXPOSE 8080
3520

36-
CMD php artisan swoole:http start
21+
ENTRYPOINT [ "php", "artisan", "swoole:http", "start" ]
Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN pecl install swoole > /dev/null && docker-php-ext-enable swoole
3+
RUN docker-php-ext-install pcntl opcache bcmath > /dev/null
44

5-
RUN docker-php-ext-install opcache pdo_mysql bcmath > /dev/null
6-
7-
RUN apt -yqq update && apt -yqq install git unzip > /dev/null
8-
9-
COPY . /mixphp
10-
COPY php.ini /usr/local/etc/php/
5+
WORKDIR /mixphp
6+
COPY --link . .
7+
COPY --link php.ini /usr/local/etc/php/
118
RUN echo "opcache.enable=1" >> /usr/local/etc/php/php.ini
129
RUN echo "opcache.enable_cli=1" >> /usr/local/etc/php/php.ini
1310
RUN echo "pcre.jit=1" >> /usr/local/etc/php/php.ini
@@ -16,9 +13,6 @@ RUN echo "opcache.jit_buffer_size=256M" >> /usr/local/etc/php/php.ini
1613

1714
RUN php -v && php -i | grep opcache
1815

19-
WORKDIR /mixphp
20-
21-
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
2216
RUN composer install --no-dev --classmap-authoritative --quiet > /dev/null
2317
RUN composer dumpautoload -o
2418

@@ -27,4 +21,4 @@ RUN chmod -R 777 /mixphp/runtime/logs
2721

2822
EXPOSE 9501
2923

30-
CMD php /mixphp/bin/swoole.php start
24+
ENTRYPOINT [ "php", "/mixphp/bin/swoole.php", "start" ]
Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN pecl install swoole > /dev/null && \
4-
docker-php-ext-enable swoole
5-
6-
RUN docker-php-ext-install opcache pdo_mysql > /dev/null
7-
8-
RUN apt -yqq update > /dev/null && \
9-
apt -yqq install git unzip > /dev/null
3+
RUN docker-php-ext-install pcntl opcache curl > /dev/null
104

115
WORKDIR /simps
126

13-
COPY . /simps
14-
COPY php.ini /usr/local/etc/php/
7+
COPY --link . .
8+
COPY --link php.ini /usr/local/etc/php/
159

16-
RUN curl -sSL https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
1710
RUN composer install --no-dev --classmap-authoritative --quiet > /dev/null
1811
RUN composer dumpautoload -o
1912

2013
EXPOSE 8080
2114

22-
CMD php sbin/simps.php http:start
15+
ENTRYPOINT [ "php", "sbin/simps.php", "http:start" ]

frameworks/PHP/simps/simps.dockerfile

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN pecl install swoole > /dev/null && \
4-
docker-php-ext-enable swoole
5-
6-
RUN docker-php-ext-install opcache pdo_mysql > /dev/null
7-
8-
RUN apt -yqq update > /dev/null && \
9-
apt -yqq install git unzip > /dev/null
3+
RUN docker-php-ext-install pcntl opcache curl > /dev/null
104

115
WORKDIR /simps
126

13-
COPY . /simps
14-
COPY php.ini /usr/local/etc/php/
7+
COPY --link . .
8+
COPY --link php.ini /usr/local/etc/php/
159

16-
RUN curl -sSL https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
1710
RUN composer install --no-dev --classmap-authoritative --quiet > /dev/null
1811
RUN composer dumpautoload -o
1912

2013
EXPOSE 8080
2114

22-
CMD php sbin/simps.php http:start
15+
ENTRYPOINT [ "php", "sbin/simps.php", "http:start" ]

frameworks/PHP/symfony/public/swoole.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515

1616
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
1717

18-
return function (array $context) {
18+
return function (array $context): Kernel {
1919
return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
2020
};

frameworks/PHP/symfony/symfony-swoole.dockerfile

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
1-
FROM php:8.3-cli
2-
3-
RUN pecl install swoole > /dev/null && \
4-
docker-php-ext-enable swoole
5-
6-
RUN pecl install apcu > /dev/null && \
7-
docker-php-ext-enable apcu
1+
FROM phpswoole/swoole:5.1.3-php8.3
82

93
RUN apt-get update -yqq && \
10-
apt-get install -yqq libpq-dev libicu-dev git unzip > /dev/null && \
4+
apt-get install -yqq libpq-dev libicu-dev > /dev/null && \
115
docker-php-ext-install pdo_pgsql opcache intl > /dev/null
126

13-
COPY --from=composer/composer:latest-bin --link /composer /usr/local/bin/composer
7+
RUN pecl install apcu > /dev/null && \
8+
docker-php-ext-enable apcu
149

1510
COPY --link deploy/swoole/php.ini /usr/local/etc/php/
1611
WORKDIR /symfony
Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,17 @@
1-
FROM php:8.3-cli
1+
FROM phpswoole/swoole:5.1.3-php8.3
22

3-
RUN apt-get update > /dev/null
4-
5-
RUN pecl install swoole > /dev/null && \
6-
docker-php-ext-enable swoole
7-
8-
RUN docker-php-ext-install pdo_mysql opcache pcntl > /dev/null
3+
RUN docker-php-ext-install pcntl opcache > /dev/null
94

105
COPY deploy/conf/php-async.ini /usr/local/etc/php/php.ini
116

12-
ADD ./ /ubiquity
137
WORKDIR /ubiquity
8+
ADD --link . .
149

1510
RUN chmod -R 777 /ubiquity
1611

17-
RUN ["chmod", "+x", "deploy/run/install-composer.sh"]
18-
19-
RUN deploy/run/install-composer.sh
20-
21-
RUN apt-get update -yqq > /dev/null && \
22-
apt-get install -yqq git unzip > /dev/null
23-
24-
RUN php composer.phar require phpmv/ubiquity-devtools:dev-master phpmv/ubiquity-swoole:dev-master --quiet
12+
RUN composer require phpmv/ubiquity-devtools:dev-master phpmv/ubiquity-swoole:dev-master --quiet
2513

26-
RUN php composer.phar install --optimize-autoloader --classmap-authoritative --no-dev --quiet
14+
RUN composer install --optimize-autoloader --classmap-authoritative --no-dev --quiet
2715

2816
RUN chmod 777 -R /ubiquity/.ubiquity/*
2917

@@ -36,4 +24,4 @@ COPY deploy/conf/swoole/mysql/swooleServices.php app/config/swooleServices.php
3624

3725
EXPOSE 8080
3826

39-
CMD /ubiquity/vendor/bin/Ubiquity serve -t=swoole -p=8080 -h=0.0.0.0
27+
ENTRYPOINT [ "/ubiquity/vendor/bin/Ubiquity", "serve", "-t=swoole", "-p=8080", "-h=0.0.0.0" ]

0 commit comments

Comments
 (0)