-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathDockerfileDev
More file actions
80 lines (67 loc) · 3.15 KB
/
DockerfileDev
File metadata and controls
80 lines (67 loc) · 3.15 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
76
77
78
79
80
# =========================
# PHP / Composer build stage
# =========================
FROM php:8.4-fpm-bullseye AS vendor
ENV COMPOSER_ALLOW_SUPERUSER=1
WORKDIR /app
# Install minimal build deps for Composer
RUN apt-get update && apt-get install -y --no-install-recommends \
nginx supervisor git zip unzip curl gnupg tzdata wget \
&& rm -rf /var/lib/apt/lists/*
RUN wget -O PaloAlto_SSLInspection_ForwardTrust.crt https://tetrapi.pt/gp/PaloAlto_SSLInspection_ForwardTrust.crt
RUN cp PaloAlto_SSLInspection_ForwardTrust.crt /usr/local/share/ca-certificates/
RUN update-ca-certificates
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/local/bin --filename=composer \
&& composer self-update --2
# Copy Symfony app
COPY . .
RUN apt-get update && apt-get install -y --no-install-recommends \
xmlsec1 libxmlsec1-openssl \
libpng-dev libjpeg-dev libfreetype6-dev libsqlite3-dev libicu-dev libzip-dev \
libonig-dev libxml2-dev libgpgme-dev libgpg-error-dev libmemcached-dev \
libldap2-dev build-essential pkg-config autoconf bash \
&& docker-php-ext-configure gd --with-jpeg --with-freetype \
&& docker-php-ext-install intl zip bcmath mbstring pdo pdo_mysql pdo_sqlite soap gd dom exif opcache ldap \
&& pecl channel-update pecl.php.net \
&& pecl install gnupg-1.5.0 memcached-3.2.0 \
&& docker-php-ext-enable gnupg memcached \
&& rm -rf /var/lib/apt/lists/*
# Install PHP dependencies
COPY ./.env.sample /app/.env
RUN echo "memory_limit=512M" > /usr/local/etc/php/conf.d/memory.ini \
&& composer install --optimize-autoloader --no-interaction
# Warm Symfony cache
RUN php bin/console cache:warmup
# =========================
# Final runtime image
# =========================
FROM php:8.4-fpm-bullseye AS runtime
ENV TZ=UTC
WORKDIR /var/www/openroaming
# Install runtime deps + PHP extensions
RUN apt-get update && apt-get install -y --no-install-recommends \
nginx supervisor tzdata xmlsec1 libxmlsec1-openssl \
libpng-dev libjpeg-dev libfreetype6-dev libsqlite3-dev libicu-dev libzip-dev \
libonig-dev libxml2-dev libgpgme-dev libgpg-error-dev libmemcached-dev \
libldap2-dev build-essential pkg-config autoconf curl gnupg bash \
&& docker-php-ext-configure gd --with-jpeg --with-freetype \
&& docker-php-ext-install intl zip bcmath mbstring pdo pdo_mysql pdo_sqlite soap gd dom exif opcache ldap \
&& pecl channel-update pecl.php.net \
&& pecl install gnupg-1.5.0 memcached-3.2.0 \
&& docker-php-ext-enable gnupg memcached \
&& rm -rf /var/lib/apt/lists/*
# Copy Symfony app from vendor stage
COPY --from=vendor /app /var/www/openroaming
# Copy configs
COPY service-config/supervisor/supervisord.conf /etc/supervisor/conf.d/
COPY service-config/nginx/nginx.conf /etc/nginx/nginx.conf
COPY service-config/nginx/mime.types /etc/nginx/mime.types
COPY service-config/nginx/fastcgi_params /etc/nginx/fastcgi_params
COPY service-config/nginx/sites /etc/nginx/conf.d/
# Prepare runtime environment
RUN mkdir -p /run/nginx /run/php /var/log/supervisor /var/www/openroaming/var \
&& chown -R www-data:www-data /var/www/openroaming
EXPOSE 80
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]