mlocati / docker-php-extension-installer

Easily install PHP extensions in Docker containers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support to install newrelic

leroy0211 opened this issue · comments

Hi,

We use newrelic a lot in our projects, and I'm wondering if this is a great candidate to install with install-php-extensions.

This might be related to #784 , but it was closed with status completed.

I don't know newrelic... is it a PHP extension? How do you install it?

newrelic is a APM monitoring tool, which uses a newrelic.ini file for configuration, located in $PHP_INI_DIR.

There are basically 2 ways of using the newrelic php daemon. Either as separate container, or in the same container as php is running. Both need the newrelic php agent installed in the image that is running php.

docs: https://docs.newrelic.com/docs/apm/agents/php-agent/advanced-installation/docker-other-container-environments-install-php-agent

The newrelic agent adds a few "native" php functions to interact with newrelic. see: https://docs.newrelic.com/docs/apm/agents/php-agent/php-agent-api/guide-using-php-agent-api/

We usually install newrelic in our images like so:

RUN cd ~ \
    && export NEWRELIC_VERSION="$(curl -sS https://download.newrelic.com/php_agent/release/ | sed -n 's/.*>\(.*linux\).tar.gz<.*/\1/p')" \
    && curl -sS "https://download.newrelic.com/php_agent/release/${NEWRELIC_VERSION}.tar.gz" | gzip -dc | tar xf - \
    && cd "${NEWRELIC_VERSION}" \
    && NR_INSTALL_SILENT=true ./newrelic-install install \
    && NR_SO_FILE=`readlink /usr/local/lib/php/extensions/no-debug-non-zts-*/newrelic.so` \
    && mv "${NR_SO_FILE}" /usr/local/lib/php/extensions/no-debug-non-zts-*/newrelic.so \
    && chown -R www-data:www-data /var/log/newrelic \
    && cd .. \
    && unset NEWRELIC_VERSION \
    && rm -rf "${NEWRELIC_VERSION}"

A few notes, this doesn't change the newrelic.ini file located in $PHP_INI_DIR, so neither a license key or application name is configured (which are the minimum requirements for this extension to work).

We often mount a separate newrelic.ini in our containers, which override the default newrelic.ini

What do you think? Would this be a php extension to add to docker-php-extension-installer?

Thanks for the detailed instructions!
Done.

thank you, it works :shipit: