php icon indicating copy to clipboard operation
php copied to clipboard

Using pecl is hard from the Alpine variant

Open TimWolla opened this issue 5 years ago • 6 comments
trafficstars

Partly a duplicate of #412 and related to #769.

The adminer image has alpine based variants, because it is a mostly batteries included image for development purposes. What it doesn't include is the database drivers that require installation of a pecl extension.

While checking on the request issue / support request TimWolla/docker-adminer#68 I realized that there is no easy way to install pecl extensions in the Alpine variants. phpize + dependencies are not readily available and the automated management lives within the docker-php-ext-* helper scripts.

Thus I'd like to request either a pecl wrapper or helper scripts for the phpize management that does not require me copying over bits and pieces from various scripts that might break when future changes are made.

TimWolla avatar Dec 05 '19 09:12 TimWolla

I would make a slight adjustment to your steps on https://github.com/TimWolla/docker-adminer/issues/68, since the PHP source isn't necessary:

apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
pecl install mongodb
docker-php-ext-enable mongodb
apk del --no-network .phpize-deps-configure

IMO, this is the type of additional effort folks sign up for when they choose to use the (intentionally hyper-minimal) Alpine variants.

More importantly however, I think https://github.com/docker-library/php/pull/851 (thus https://github.com/docker-library/php/pull/840#issuecomment-502251019, etc) is extremely relevant: pecl being included in the core PHP distribution has a short lifespan (deprecated in PHP 7, not planned for inclusion in PHP 8+), so I'd really rather avoid adding any additional behavior that wraps pecl.

tianon avatar Dec 05 '19 23:12 tianon

since the PHP source isn't necessary:

Thanks. Edited.

IMO, this is the type of additional effort folks sign up for when they choose to use the (intentionally hyper-minimal) Alpine variants.

The additional two commands were not the issue, that's absolutely fine and meets my expectations. The issue I had was that it wasn't documented how to do it properly (or I might've missed it).

pecl being included in the core PHP distribution has a short lifespan (deprecated in PHP 7, not planned for inclusion in PHP 8+), so I'd really rather avoid adding any additional behavior that wraps pecl.

Ah, yeah. I believe I read something about this on the php-internals list before, but I don't really keep track of the threads there (15k unread …). Do you happen to know what the alternative for external extensions would be going forward? Manually downloading the source code from somewhere?

TimWolla avatar Dec 06 '19 10:12 TimWolla

pecl being included in the core PHP distribution has a short lifespan (deprecated in PHP 7, not planned for inclusion in PHP 8+),

I didn't know this, do you have a link to when this was announced (did some googling but couldn't find anything) ?

elovin avatar Dec 11 '19 16:12 elovin

@elovin https://externals.io/message/103977 / https://github.com/php/php-src/pull/3781 / https://github.com/php/php-src/commit/e93d6d97aab7a5de1f7b8dc750ca9d08214de8c4

tianon avatar Dec 11 '19 21:12 tianon

I guess the action item here is probably to document our PHPIZE_DEPS variable? :innocent:

Edit: probably specifically in variant-alpine.md? (since it's not really meaningful in Debian as they're pre-installed there)

tianon avatar Jun 08 '22 21:06 tianon

I forgot this issue existed and I effectively moved on, since I know what I have to do.

I guess the action item here is probably to document our PHPIZE_DEPS variable? innocent

But yeah, this makes sense to me, probably with the example from https://github.com/docker-library/php/issues/919#issuecomment-562359749.

TimWolla avatar Jun 08 '22 21:06 TimWolla