-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathDockerfile
More file actions
51 lines (39 loc) · 2 KB
/
Dockerfile
File metadata and controls
51 lines (39 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Estágio 1: compila extensões PHP (toolchain pesada); não vai para a imagem final.
FROM php:8.2-fpm-alpine AS php_extensions_builder
RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
libzip-dev libpng-dev oniguruma-dev icu-dev libxml2-dev \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& docker-php-ext-install -j"$(nproc)" pdo_mysql zip exif intl opcache pcntl bcmath \
&& mkdir -p /export-inis \
&& cp /usr/local/etc/php/conf.d/docker-php-ext-*.ini /export-inis/ \
&& apk del .build-deps \
&& rm -rf /tmp/pear /var/cache/apk/*
# Estágio 2: runtime — só nginx/supervisor + libs runtime (sem gcc).
# COPY do builder ANTES do apk: força o builder a terminar primeiro (evita dois apk em paralelo no BuildKit).
FROM php:8.2-fpm-alpine AS php_runtime
COPY --from=php_extensions_builder \
/usr/local/lib/php/extensions/no-debug-non-zts-20220829/ \
/usr/local/lib/php/extensions/no-debug-non-zts-20220829/
COPY --from=php_extensions_builder /export-inis/ /usr/local/etc/php/conf.d/
RUN apk add --no-cache \
nginx supervisor curl \
git unzip mysql-client \
libzip libpng oniguruma icu-libs icu-data-en libxml2
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
FROM php_runtime AS app
COPY docker/php/conf.d/99-getfy-uploads.ini /usr/local/etc/php/conf.d/99-getfy-uploads.ini
COPY docker/php-fpm.d/zz-getfy.conf /usr/local/etc/php-fpm.d/zz-getfy.conf
COPY docker/nginx/getfy.conf /etc/nginx/http.d/default.conf
COPY docker/supervisord.conf /etc/supervisord.conf
COPY . .
COPY docker/entrypoint.sh /usr/local/bin/getfy-entrypoint
RUN chmod +x /usr/local/bin/getfy-entrypoint \
&& mkdir -p storage/framework/cache/data storage/framework/sessions storage/framework/views bootstrap/cache .docker .docker/plugins-installed \
&& mkdir -p /run/nginx \
&& chmod -R 777 storage bootstrap/cache .docker
EXPOSE 80
ENTRYPOINT ["/usr/local/bin/getfy-entrypoint"]
CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]