46 lines
1002 B
Docker
46 lines
1002 B
Docker
# Use official PHP image with Apache
|
|
FROM php:8.1-apache
|
|
|
|
# Set working directory
|
|
WORKDIR /var/www/html
|
|
|
|
# Install system dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
mysql-client \
|
|
git \
|
|
curl \
|
|
zip \
|
|
unzip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Enable Apache modules
|
|
RUN a2enmod rewrite \
|
|
&& a2enmod headers
|
|
|
|
# Install PHP extensions
|
|
RUN docker-php-ext-install \
|
|
mysqli \
|
|
pdo \
|
|
pdo_mysql
|
|
|
|
# Set PHP configuration
|
|
RUN echo "display_errors = On" >> /usr/local/etc/php/conf.d/php.ini \
|
|
&& echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/php.ini \
|
|
&& echo "date.timezone = Asia/Jakarta" >> /usr/local/etc/php/conf.d/php.ini
|
|
|
|
# Copy project files
|
|
COPY 01 /var/www/html
|
|
|
|
# Set permissions
|
|
RUN chown -R www-data:www-data /var/www/html
|
|
|
|
# Expose port 80
|
|
EXPOSE 80
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
|
CMD curl -f http://localhost/ || exit 1
|
|
|
|
# Start Apache
|
|
CMD ["apache2-foreground"]
|