|
1 | 1 | # elecena.pl (c) 2015-2021 |
2 | 2 |
|
3 | 3 | # @see https://hub.docker.com/_/composer |
4 | | -FROM composer:1.10.20 AS php-composer |
| 4 | +FROM composer:2.1.3 AS php-composer |
| 5 | +RUN /usr/bin/composer -v |
| 6 | + |
| 7 | +# @see https://hub.docker.com/_/php |
| 8 | +FROM php:8.0.7-cli-alpine AS php |
| 9 | +RUN apk add \ |
| 10 | + bzip2-dev \ |
| 11 | + libsodium-dev \ |
| 12 | + libxml2-dev \ |
| 13 | + libxslt-dev |
| 14 | + |
| 15 | +RUN docker-php-ext-install \ |
| 16 | + bz2 \ |
| 17 | + calendar \ |
| 18 | + exif \ |
| 19 | + pcntl \ |
| 20 | + shmop \ |
| 21 | + soap \ |
| 22 | + sockets \ |
| 23 | + sodium \ |
| 24 | + sysvsem \ |
| 25 | + sysvshm \ |
| 26 | + xsl |
| 27 | + |
| 28 | +RUN which php; php -v; php -m; php -i | grep ini |
5 | 29 |
|
6 | 30 | # @see https://hub.docker.com/_/python/ |
7 | | -FROM python:3.9.0-alpine3.12 |
| 31 | +FROM python:3.9.5-alpine |
8 | 32 | RUN pip install virtualenv && rm -rf /root/.cache |
| 33 | +RUN python -V |
9 | 34 |
|
10 | 35 | # copy composer from the first stage |
11 | 36 | COPY --from=php-composer /usr/bin/composer /usr/bin |
12 | 37 |
|
13 | | -# set up PHP 8.0 packages repository |
14 | | -# @see https://github.com/codecasts/php-alpine |
15 | | -ADD https://dl.bintray.com/php-alpine/key/php-alpine.rsa.pub /etc/apk/keys/php-alpine.rsa.pub |
16 | | -RUN echo "https://dl.bintray.com/php-alpine/v3.12/php-8.0" >> /etc/apk/repositories |
17 | | - |
18 | | -ENV PHP_VERSION 8.0.1 |
19 | | - |
20 | | -# install dependencies |
21 | | -RUN apk update && apk add \ |
22 | | - php8 \ |
23 | | - php8-bz2 \ |
24 | | - php8-calendar \ |
25 | | - php8-curl \ |
26 | | - php8-ctype \ |
27 | | - php8-exif \ |
28 | | - php8-ftp \ |
29 | | - php8-gettext \ |
30 | | - php8-iconv \ |
31 | | - php8-mbstring \ |
32 | | - php8-opcache \ |
33 | | - php8-openssl \ |
34 | | - php8-pcntl \ |
35 | | - php8-pdo \ |
36 | | - php8-phar \ |
37 | | - php8-posix \ |
38 | | - php8-session \ |
39 | | - php8-shmop \ |
40 | | - php8-soap \ |
41 | | - php8-sockets \ |
42 | | - php8-sodium \ |
43 | | - php8-sysvsem \ |
44 | | - php8-sysvshm \ |
45 | | - php8-xmlreader \ |
46 | | - php8-xml \ |
47 | | - php8-xsl \ |
48 | | - php8-zlib \ |
49 | | - # see https://github.com/elecena/python-php/issues/8 |
50 | | - # The problem seems to be that iconv in musl is not implemented to support that conversion, when using GNU iconv it works. |
51 | | - gnu-libiconv \ |
52 | | - && rm -rf /tmp/* /var/log/* /var/cache/* |
| 38 | +# copy PHP binary and required libs |
| 39 | +COPY --from=php /usr/local/bin/php /usr/bin |
| 40 | +COPY --from=php /usr/local/etc/php /usr/local/etc/php |
| 41 | +COPY --from=php /usr/lib/*.so.* /usr/lib |
| 42 | +COPY --from=php /usr/local/lib/php /usr/local/lib/php |
53 | 43 |
|
| 44 | +# see https://github.com/elecena/python-php/issues/8 |
| 45 | +# The problem seems to be that iconv in musl is not implemented to support that conversion, when using GNU iconv it works. |
| 46 | +RUN apk add gnu-libiconv |
54 | 47 | # use GNU iconv in php |
55 | | -ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so php-fpm7 php7" |
| 48 | +ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so php-fpm php" |
| 49 | +# and test it... |
| 50 | +RUN php -r '$res = iconv("utf-8", "utf-8//IGNORE", "fooą");' |
56 | 51 |
|
57 | | -# add a symlink |
58 | | -RUN ln -s /usr/bin/php8 /usr/bin/php |
| 52 | +RUN php -v; php -m; php -i | grep ini |
| 53 | +ENV PHP_VERSION 8.0.7 |
59 | 54 |
|
60 | 55 | # add an info script |
61 | 56 | WORKDIR /opt |
|
0 commit comments