-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathDockerfile
78 lines (58 loc) · 2.97 KB
/
Dockerfile
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
##################################################################################################################
# Dependency Stage
##################################################################################################################
FROM composer:latest AS vendor
WORKDIR /app/
COPY composer.json composer.lock /app/
COPY . /app/
RUN composer install \
--ignore-platform-reqs \
--no-interaction \
--no-plugins \
--no-scripts \
--prefer-dist \
--classmap-authoritative \
--no-ansi \
--no-dev
##################################################################################################################
# Base Stage
##################################################################################################################
FROM php:8.2-cli-alpine3.17 as base_image
RUN apk --no-cache update \
&& apk --no-cache add gmp-dev python3 py3-pip \
&& docker-php-ext-install -j$(nproc) gmp bcmath opcache
COPY . /app/
COPY --from=vendor /app/vendor/ /app/vendor/
WORKDIR /app/resources/xpub_derive
RUN pip3 install --no-cache -r requirements.txt
COPY docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint
ENTRYPOINT ["docker-entrypoint"]
WORKDIR /app/
##################################################################################################################
# Development Stage
##################################################################################################################
FROM base_image as development_build
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
COPY docker/php-development.ini "$PHP_INI_DIR/php.ini"
COPY --from=vendor /usr/bin/composer /usr/bin/composer
# php code coverage & development
RUN apk --no-cache update \
&& apk --no-cache add autoconf g++ make linux-headers \
&& pecl install pcov xdebug \
&& docker-php-ext-enable pcov xdebug
##################################################################################################################
# Test Stage
##################################################################################################################
FROM development_build AS testing_stage
# run the test script(s) from composer, this validates the application before allowing the build to succeed
# this does make the tests run multiple times, but with different architectures
RUN composer install --no-interaction --no-plugins --no-scripts --prefer-dist --no-ansi --ignore-platform-reqs
RUN vendor/bin/phpunit --testdox --coverage-clover /tmp/tests_coverage.xml --log-junit /tmp/tests_log.xml
##################################################################################################################
# Production Stage
##################################################################################################################
FROM base_image as production_build
COPY docker/php-production.ini "$PHP_INI_DIR/php.ini"
# run the app to precompile the DI container
RUN /app/bin/bitcoin-dca