78 lines
1.6 KiB
Plaintext
78 lines
1.6 KiB
Plaintext
FROM php:8.4-fpm-alpine3.21
|
|
|
|
ARG UID=1000
|
|
ARG GID=1000
|
|
ARG DEBUG=false
|
|
ARG BUILD_MODE=prod
|
|
|
|
# Custom prompt
|
|
ENV PS1="\033[01;32mapp\033[00m:\033[01;34m\w\033[00m\$ \033[37m"
|
|
|
|
# Install packages
|
|
RUN apk add --update --no-cache \
|
|
linux-headers \
|
|
curl \
|
|
curl-dev \
|
|
git \
|
|
build-base \
|
|
libpq-dev \
|
|
libpng-dev \
|
|
libzip-dev \
|
|
zlib-dev \
|
|
oniguruma-dev \
|
|
autoconf \
|
|
nginx \
|
|
bash \
|
|
shadow \
|
|
make
|
|
|
|
# Install PHP extensions
|
|
RUN docker-php-ext-install \
|
|
pdo_pgsql \
|
|
bcmath \
|
|
curl \
|
|
exif \
|
|
zip \
|
|
bz2 \
|
|
gd
|
|
|
|
# Configure non-root user
|
|
RUN groupmod -o -g ${GID} www-data && \
|
|
usermod -o -u ${UID} -g www-data www-data
|
|
|
|
# Copy application
|
|
WORKDIR /app
|
|
RUN chown www-data:www-data /app
|
|
COPY --chown=www-data:www-data ./ /app
|
|
|
|
# Configure Xdebug
|
|
RUN if [ ${DEBUG} = "true" ]; \
|
|
then \
|
|
pecl install xdebug && docker-php-ext-enable xdebug; \
|
|
fi;
|
|
COPY ./docker/conf/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
|
|
|
# Install composer
|
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
|
|
|
# Install php dependencies
|
|
RUN if [ ${BUILD_MODE} = "prod" ]; \
|
|
then \
|
|
composer install --no-dev --no-interaction --no-progress --no-scripts --optimize-autoloader; \
|
|
chown -R www-data:www-data /app/vendor/; \
|
|
fi;
|
|
|
|
# Configure nginx
|
|
RUN touch /var/lib/nginx/logs/error.log && chown www-data:www-data /var/lib/nginx/logs/error.log
|
|
RUN chown -Rf www-data:www-data /var/lib/nginx /run
|
|
COPY ./docker/conf/nginx.conf /etc/nginx/
|
|
|
|
COPY ./docker/entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
USER www-data
|
|
|
|
EXPOSE 80
|
|
|
|
CMD ["/entrypoint.sh"]
|