-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathDockerfile
More file actions
71 lines (49 loc) · 1.65 KB
/
Dockerfile
File metadata and controls
71 lines (49 loc) · 1.65 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
# --- composer
FROM composer:2.8 AS composer
COPY composer.json \
composer.lock \
./
RUN composer --no-interaction install --no-dev --ignore-platform-reqs --no-autoloader --no-suggest --prefer-dist
COPY src/ src/
COPY test/ test/
RUN composer --no-interaction dump-autoload --classmap-authoritative
# --- composer_dev
FROM composer AS composer_dev
RUN composer --no-interaction install --ignore-platform-reqs --no-autoloader --no-suggest --prefer-dist
RUN composer --no-interaction dump-autoload --classmap-authoritative
# --- app
FROM ghcr.io/elifesciences/php:8.3-fpm AS app
ENV PROJECT_FOLDER=/srv/recommendations
ENV PHP_ENTRYPOINT=web/app.php
WORKDIR ${PROJECT_FOLDER}
USER root
RUN mkdir -p build var && \
chown --recursive elife:elife . && \
chown --recursive www-data:www-data var
COPY --chown=elife:elife web/ web/
COPY --from=composer --chown=elife:elife /app/vendor/ vendor/
COPY --chown=elife:elife src/ src/
USER www-data
HEALTHCHECK --interval=10s --timeout=10s --retries=3 CMD assert_fpm /ping "pong"
# --- dev
FROM app AS dev
COPY --from=composer_dev --chown=elife:elife /app/vendor/ vendor/
# --- ci
FROM app AS ci
USER root
RUN mkdir -p build/ && \
touch .php_cs.cache && \
chown --recursive www-data:www-data build/ .php_cs.cache
COPY --from=composer_dev /usr/bin/composer /usr/bin/composer
COPY --chown=elife:elife \
phpunit.xml.dist \
phpcs.xml.dist \
project_tests.sh \
./
COPY --chown=elife:elife composer.json composer.lock ./
COPY --from=composer_dev --chown=elife:elife /app/vendor/ vendor/
COPY --chown=elife:elife test/ test/
USER www-data
CMD ["./project_tests.sh"]
# --- default build target
FROM app