Files
portal-api/docker/Dockerfile
T

51 lines
1.4 KiB
Docker

FROM php:8.2-fpm-alpine
# Install system dependencies
RUN apk add --no-cache \
git curl unzip icu-dev libzip-dev libpng-dev libjpeg-turbo-dev \
freetype-dev libxml2-dev oniguruma-dev linux-headers \
imagemagick-dev $PHPIZE_DEPS caddy \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) \
bcmath ctype fileinfo gd intl mbstring \
pdo pdo_mysql opcache pcntl sockets zip xml \
&& pecl install redis imagick \
&& docker-php-ext-enable redis imagick \
&& apk del $PHPIZE_DEPS linux-headers \
&& rm -rf /tmp/*
# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# Set working directory
WORKDIR /var/www/html
# Copy application code
COPY . .
# Install Laravel dependencies
RUN php /usr/bin/composer install \
--no-dev --optimize-autoloader --no-interaction --no-progress \
--no-scripts --ignore-platform-req=ext-ssh2
# Create required directories and set permissions
RUN mkdir -p \
storage/framework/sessions \
storage/framework/views \
storage/framework/cache/data \
storage/logs \
bootstrap/cache \
&& chown -R www-data:www-data storage bootstrap/cache \
&& chmod -R 775 storage bootstrap/cache
# Caddy config for Laravel
COPY docker/Caddyfile /etc/caddy/Caddyfile
# Entrypoint
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
EXPOSE 8088
ENTRYPOINT ["/entrypoint.sh"]