-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathDockerfile
More file actions
75 lines (64 loc) · 2.14 KB
/
Dockerfile
File metadata and controls
75 lines (64 loc) · 2.14 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
FROM php:8.4-apache
WORKDIR /var/www/html
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
libjpeg62-turbo-dev \
libpng-dev \
build-essential \
curl \
gifsicle \
git \
jpegoptim \
libfreetype6-dev \
libjpeg-dev \
libmagickwand-dev \
libonig-dev \
libpq-dev \
libsqlite3-dev \
libssl-dev \
libwebp-dev \
libxml2-dev \
libzip-dev \
locales \
optipng \
pngquant \
unzip \
zip \
zlib1g-dev \
vim \
cron \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN pecl install imagick \
&& docker-php-ext-enable imagick \
&& docker-php-ext-install mbstring gd pdo_pgsql pdo_sqlite xml sockets \
&& docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg
# Configure PHP for large file uploads (100MB)
RUN echo "upload_max_filesize = 100M" >> /usr/local/etc/php/php.ini \
&& echo "post_max_size = 100M" >> /usr/local/etc/php/php.ini \
&& echo "max_execution_time = 300" >> /usr/local/etc/php/php.ini \
&& echo "max_input_time = 300" >> /usr/local/etc/php/php.ini \
&& echo "log_errors = On" >> /usr/local/etc/php/php.ini
# Create a script to configure PHP based on environment
COPY docker/configure-php.sh /usr/local/bin/configure-php.sh
RUN chmod +x /usr/local/bin/configure-php.sh
# Install Composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (file_exists('composer-setup.php')) { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }" \
&& php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
&& php -r "unlink('composer-setup.php');"
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install \
--no-interaction \
--no-plugins \
--no-scripts \
--no-dev \
--prefer-dist
COPY ./src /var/www/html/
# Set up cron job
RUN echo '0 0 * * * . /etc/environment; /usr/local/bin/php /var/www/html/cronjobs/contest.php >> /dev/null 2>&1' > /etc/cron.d/contest-cron \
&& chmod 0644 /etc/cron.d/contest-cron \
&& crontab /etc/cron.d/contest-cron
EXPOSE 80
ENTRYPOINT ["/usr/local/bin/configure-php.sh"]