Skip to content

Commit 9367338

Browse files
committed
Initial experiments to build FrankenPHP-based images
1 parent 51a5047 commit 9367338

File tree

3 files changed

+21
-94
lines changed

3 files changed

+21
-94
lines changed

Dockerfile

Lines changed: 15 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
# dependencies
21
FROM caddy:2.6.2 AS caddy
32

4-
# development
53
FROM composer:2.4.4 AS composer
64

75
ARG APPLICATION_ENV=development
@@ -47,75 +45,31 @@ RUN \
4745
--optimize; \
4846
fi
4947

50-
FROM php:8.1.9-cli-alpine AS php-cli
48+
FROM dunglas/frankenphp AS frankenphp
5149

5250
ARG APPLICATION_ENV=development
5351
ENV APPLICATION_ENV=${APPLICATION_ENV}
5452
ARG COMMIT_SHA
5553
ENV COMMIT_SHA=${COMMIT_SHA}
5654

57-
RUN apk add --no-cache \
58-
icu \
59-
imagemagick \
60-
libgomp \
61-
libpq \
62-
libxml2 \
63-
libzip && \
64-
apk add --no-cache --virtual .phpize-deps \
65-
$PHPIZE_DEPS \
66-
icu-dev \
67-
imagemagick-dev \
68-
libxml2-dev \
69-
libzip-dev \
70-
postgresql-dev && \
71-
docker-php-ext-install "-j$(nproc)" \
72-
intl \
73-
opcache \
74-
pdo_pgsql \
75-
pgsql \
76-
soap \
77-
zip && \
78-
pecl install imagick && \
79-
docker-php-ext-enable imagick && \
80-
pecl install mailparse && \
81-
docker-php-ext-enable mailparse && \
82-
pecl install redis && \
83-
docker-php-ext-enable redis && \
84-
apk del .phpize-deps
85-
86-
RUN apk add --no-cache \
87-
openjdk11-jre && \
88-
apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main --update-cache \
89-
nodejs==10.24.1-r0 \
90-
npm==10.24.1-r0 && \
91-
npm install -g less
92-
9355
RUN mv "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
9456

95-
COPY --from=composer /app/ /app/
57+
COPY docker/frankenphp/litus.ini /usr/local/etc/php/conf.d/
9658

97-
COPY docker/php-cli/litus.ini /usr/local/etc/php/conf.d/
98-
COPY docker/php-cli/entrypoint.sh /
99-
100-
ENTRYPOINT ["/entrypoint.sh"]
101-
102-
FROM php:8.1.9-fpm-alpine AS php-fpm
103-
104-
ARG APPLICATION_ENV=development
105-
ENV APPLICATION_ENV=${APPLICATION_ENV}
106-
ARG COMMIT_SHA
107-
ENV COMMIT_SHA=${COMMIT_SHA}
59+
RUN install-php-extensions \
60+
imagick \
61+
intl \
62+
mailparse \
63+
opcache \
64+
pdo_pgsql \
65+
pgsql \
66+
redis \
67+
soap \
68+
zip
10869

10970
RUN apk add --no-cache \
110-
icu \
111-
imagemagick \
112-
libgomp \
113-
libpq \
114-
libxml2 \
115-
libzip \
116-
openjdk11-jre
117-
118-
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main --update-cache \
71+
openjdk11-jre && \
72+
apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main --update-cache \
11973
nodejs==10.24.1-r0 \
12074
npm==10.24.1-r0 && \
12175
npm install -g less
@@ -124,8 +78,6 @@ RUN curl -fsSL -o /tmp/fop-2.7-bin.tar.gz https://downloads.apache.org/xmlgraphi
12478
tar --strip-components=1 -C /opt -xzf /tmp/fop-2.7-bin.tar.gz fop-2.7/fop && \
12579
rm /tmp/fop-2.7-bin.tar.gz
12680

127-
RUN mv "${PHP_INI_DIR}/php.ini-production" "${PHP_INI_DIR}/php.ini"
128-
12981
RUN mkdir -p /app/public/_assetic && \
13082
mkdir -p /app/public/_common/profile && \
13183
mkdir -p /app/public/_gallery/albums && \
@@ -134,13 +86,7 @@ RUN mkdir -p /app/public/_assetic && \
13486
mkdir -p /app/public/_br/img && \
13587
chown -R www-data:www-data /app
13688

137-
COPY --from=php-cli --chown=www-data:www-data /app/ /app/
138-
139-
COPY --from=php-cli /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
140-
COPY --from=php-cli /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
141-
142-
COPY docker/php-fpm/litus.ini /usr/local/etc/php/conf.d/
143-
COPY docker/php-fpm/opcache.ini /usr/local/etc/php/conf.d/
89+
COPY --from=composer /app/ /app/
14490

14591
VOLUME ["/app/public/_assetic"]
14692
VOLUME ["/app/public/_common/profile"]
@@ -150,24 +96,3 @@ VOLUME ["/app/public/_publications/html"]
15096
VOLUME ["/app/public/_br/img"]
15197

15298
VOLUME ["/data"]
153-
154-
FROM scratch
155-
156-
COPY --from=caddy /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
157-
COPY --from=caddy /usr/bin/caddy /usr/bin/
158-
159-
COPY --from=composer /app/public/ /app/public/
160-
161-
COPY docker/caddy/Caddyfile /etc/caddy/
162-
163-
VOLUME ["/app/public/_assetic"]
164-
VOLUME ["/app/public/_common/profile"]
165-
VOLUME ["/app/public/_gallery/albums"]
166-
VOLUME ["/app/public/_publications/pdf"]
167-
VOLUME ["/app/public/_publications/html"]
168-
VOLUME ["/app/public/_br/img"]
169-
170-
EXPOSE 8080
171-
172-
ENTRYPOINT ["caddy"]
173-
CMD ["run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]

composer.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@
6262
"squizlabs/php_codesniffer": "^3.3",
6363
"slevomat/coding-standard": "^6.1"
6464
},
65+
"config": {
66+
"allow-plugins": {
67+
"laminas/laminas-dependency-plugin": true,
68+
"phpstan/extension-installer": true
69+
}
70+
},
6571
"autoload": {
6672
"psr-4": {
6773
"Migrations\\": "migrations",

docker/php-cli/litus.ini

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

0 commit comments

Comments
 (0)