shuba.ivan
shuba.ivan

Reputation: 4051

Alpine with AMQP php extension

How should Dockerfile look with Alpine (alpine:3.10) for using rabbit and rabbit dependency packages? I have an Ubuntu configuration. How to reproduce it for Alpine ?

FROM php:7.3-fpm
RUN apt-get update && apt-get install -y --no-install-recommends \
        git \
        zlib1g-dev \
        libxml2-dev \
        librabbitmq-dev \
        libzip-dev \
        libonig-dev \
    && docker-php-ext-install \
        pdo_mysql \
        zip \
    && pecl install amqp \
    && docker-php-ext-enable amqp # Enable the Extension

RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
COPY project/ /var/www/project
WORKDIR /var/www/project/

Upvotes: 1

Views: 10699

Answers (6)

Blueblazer172
Blueblazer172

Reputation: 600

If anybody has a legacy app which needs php7.3. use these steps in your dockerfile:

FROM php:7.3.20-fpm

RUN DEBIAN_FRONTEND=noninteractive apt-get update \
   && apt-get install -y \
       librabbitmq-dev \
       curl \
   && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install bcmath

after that build the legacy php-amqp version v1.9.4, which has support for php-7.3 from source and enable the php extension:

RUN curl https://github.com/php-amqp/php-amqp/archive/refs/tags/v1.9.4.tar.gz --location -o /tmp/php-amqp-v1.9.4.tar.gz \
    && mkdir /tmp/php-amqp-v1.9.4 \
    && tar -C /tmp/php-amqp-v1.9.4 -xf /tmp/php-amqp-v1.9.4.tar.gz --strip-components=1 \
    && (cd /tmp/php-amqp-v1.9.4 && phpize && ./configure && make && make install) \
    && rm -rfv /tmp/php-amqp-v1.9.4 \
    && docker-php-ext-enable amqp

Upvotes: 0

Fefas
Fefas

Reputation: 165

For php:8.0.6-fpm-alpine I solved this using:

RUN apk add --no-cache rabbitmq-c-dev && \
    mkdir -p /usr/src/php/ext/amqp && \
    curl -fsSL https://pecl.php.net/get/amqp | tar xvz -C "/usr/src/php/ext/amqp" --strip 1 && \
    docker-php-ext-install amqp

Reference: https://github.com/docker-library/php/issues/1029#issuecomment-650576137

Upvotes: 1

Tim K
Tim K

Reputation: 41

This worked for me on php:7.4-fpm-alpine3.12

RUN apk --update --no-cache add build-base \
        autoconf \
        rabbitmq-c-dev
    
RUN pecl install amqp
RUN docker-php-ext-enable amqp

Upvotes: 4

by25
by25

Reputation: 1

FROM php:7.4.8-fpm-alpine

# Add AMQP extension
RUN apk add \
        --repository http://dl-cdn.alpinelinux.org/alpine/v3.6/main \
        --no-cache \
        rabbitmq-c-dev \
        && pecl install amqp \
        && docker-php-ext-enable amqp

//...

Upvotes: 0

chibis
chibis

Reputation: 81

FROM php:7.4-fpm-alpine

# Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Extensions
RUN echo "Extensions install - start" \
    # Sockets
    && docker-php-ext-install sockets \
    # Amqp
    && apk add --no-cache --update rabbitmq-c-dev \
    && apk add --no-cache --update --virtual .phpize-deps $PHPIZE_DEPS \
    && pecl install -o -f amqp \
    && docker-php-ext-enable amqp \
    && apk del .phpize-deps \
    #
    && echo "Extensions install - finish"

Upvotes: 3

Ovinz
Ovinz

Reputation: 485

You have to install those librairies rabbitmq-c & rabbitmq-c-dev.

So you can do:

FROM php:7.3-fpm
RUN apt-get update && apt-get install -y --no-install-recommends \
        git \
        zlib1g-dev \
        libxml2-dev \
        rabbitmq-c rabbitmq-c-dev \
        libzip-dev \
        libonig-dev \
    && docker-php-ext-install \
        pdo_mysql \
        zip \
    && pecl install amqp \
    && docker-php-ext-enable amqp # Enable the Extension

RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
COPY project/ /var/www/project
WORKDIR /var/www/project/

Upvotes: 4

Related Questions