-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
95 lines (79 loc) · 3.41 KB
/
Dockerfile
File metadata and controls
95 lines (79 loc) · 3.41 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
FROM php:8.4-fpm AS build
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
unzip \
curl \
libicu-dev \
libzip-dev \
libsqlite3-dev \
libxml2-dev \
&& rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install -j$(nproc) \
intl \
pdo \
pdo_sqlite \
zip \
soap \
ftp \
sockets \
pcntl
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
ARG ASSET_NAME=release.zip
ARG APP_ENV=prod
RUN set -e; \
mkdir -p /tmp/release; \
curl -fL "https://github.com/SyncEngine/SyncEngine/releases/latest/download/${ASSET_NAME}" -o /tmp/release.zip; \
unzip /tmp/release.zip -d /tmp/release; \
cp -a /tmp/release/. /app/
RUN if [ "$APP_ENV" = "dev" ]; then \
composer install --prefer-dist --no-progress --no-interaction; \
else \
composer install --no-dev --prefer-dist --no-progress --no-interaction --optimize-autoloader; \
fi
RUN if [ -f .env ]; then cp .env .env.local; fi
RUN mkdir -p /app/var/cache /app/var/log /app/var/data
RUN mkdir -p /app-default/secrets /app-default/modules /app-default/blueprints
RUN mkdir -p /app/config/secrets /app/modules /app/blueprints
RUN sh -lc 'cp -a /app/config/secrets/. /app-default/secrets/ 2>/dev/null || true'
RUN sh -lc 'cp -a /app/modules/. /app-default/modules/ 2>/dev/null || true'
RUN sh -lc 'cp -a /app/blueprints/. /app-default/blueprints/ 2>/dev/null || true'
FROM php:8.4-fpm AS fpm
RUN apt-get update && apt-get install -y --no-install-recommends \
libicu-dev \
libzip-dev \
libsqlite3-0 \
libxml2 \
ca-certificates \
gosu \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
COPY --from=build /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
RUN sh -lc 'echo "expose_php=0" > /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "memory_limit=512M" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "upload_max_filesize=64M" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "post_max_size=64M" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "max_execution_time=240" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "max_input_vars=5000" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "display_errors=Off" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "log_errors=On" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "error_reporting=E_ALL" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "realpath_cache_size=0" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "realpath_cache_ttl=0" >> /usr/local/etc/php/conf.d/app.ini'
RUN sh -lc 'echo "opcache.enable=0" > /usr/local/etc/php/conf.d/opcache.ini'
RUN sh -lc 'echo "opcache.enable_cli=0" >> /usr/local/etc/php/conf.d/opcache.ini'
WORKDIR /app
COPY --from=build /app /app
COPY --from=build /app-default /app-default
COPY docker/entrypoint.sh /usr/local/bin/entrypoint
RUN chmod +x /usr/local/bin/entrypoint
RUN mkdir -p /app/var /app/var/cache /app/var/log /app/var/data /app/config /app/modules /app/blueprints
RUN touch /app/config/modules.yaml /app/.env.local
RUN chown -R www-data:www-data /app/var /app/config /app/modules /app/blueprints
RUN chown www-data:www-data /app/.env.local /app/config/modules.yaml
ENTRYPOINT ["entrypoint"]
CMD ["php-fpm","-F"]
FROM nginx:1.27-alpine AS nginx
WORKDIR /app
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/public /app/public