Профилировать мое приложение с контейнером Blackfire в среде Docker

Сегодня я пытаюсь добавить Blackfire в мой стек Docker! Я следовал документации Blackfire, посвященной реализации Docker, контейнер настроен правильно, но мне не удалось создать первый профиль моего приложения.

Это стек Symfony. У меня есть контейнер PHP-FPM и контейнер CLI, где я запускаю команды. Контейнер NGINX является веб-сервером.

мой docker-compose.yml Файл следующий:

---
cli:
container_name: my_app_cli
build: cli
volumes:
- "./volumes/apps:/srv/apps"stdin_open: true
tty: true
environment:
- PHP_EXTRA_CONFIGURE_ARGS=--with-ldap
links:
- mysql:mysql
- redis:redis
- rabbitmq:rabbitmq
- web:web
- blackfire:blackfire

mysql:
container_name: my_app_mysql
build: mysql
environment:
- MYSQL_DATABASES=my_database
- MYSQL_ROOT_PASSWORD=sgreat_password
- MYSQL_HOST=localhost
- MYSQL_PORT=33306
- MYSQL_USER=guest
- MYSQL_PASSWORD=password
- MYSQL_LOYALTY_DATABASE=my_database
ports:
# MySQL
- "33306:3306"volumes:
# Mysql
- "./volumes/mysql:/var/lib/mysql"
phpmyadmin:
container_name: my_app_phpmyadmin
image: nazarpc/phpmyadmin
ports:
# PHPMyAdmin HTTP
- "8082:80"links:
- mysql:mysql

phpfpm:
container_name: my_app_phpfpm
build: phpfpm
ports:
- "9000:9000"environment:
- PHP_EXTRA_CONFIGURE_ARGS=--with-ldap
links:
- mysql:mysql
volumes:
- "./volumes/apps:/srv/apps"
blackfire:
container_name: my_app_blackfire
image: blackfire/blackfire
environment:
# Exposes the host BLACKFIRE_SERVER_ID and TOKEN environment variables.
- BLACKFIRE_CLIENT_ID
- BLACKFIRE_CLIENT_TOKEN
- BLACKFIRE_SERVER_ID
- BLACKFIRE_SERVER_TOKEN
links:
- web:web
volumes:
- "./volumes/apps:/srv/apps"ports:
- "8707:8707"
rabbitmq:
container_name: my_app_rabbitmq
image: rabbitmq:3.5-management
volumes:
- /var/lib/rabbitmq
environment:
RABBITMQ_USER: guest
RABBITMQ_PASSWORD: guest
ports:
# rabbitmq management
- "8085:15672"
redis:
container_name: my_app_redis
image: redis
environment:
REDIS_PASSWORD: great_password
volumes:
- "./volumes/redis:/data"ports:
- "32772:6379"
web:
container_name: my_app_web
build: nginx
environment:
NGINX_ENABLED_VHOST: www.my_app.local
extra_hosts:
- "www.my_app.local:127.0.0.1"links:
- phpfpm
volumes:
- "./volumes/apps:/srv/apps"- "./volumes/html:/usr/share/nginx/html"- "./volumes/logs/nginx:/var/log/nginx"ports:
- "80:80"- "443:443"

Мои переменные среды правильно установлены с моими идентификаторами Blackfire.

Я пытаюсь создать свой профиль с помощью следующей командной строки:

docker exec my_app_blackfire blackfire curl --proxy http://my_app_web:80 http://www.my_app.local/api/stores

Результат:

Are you authorized to profile this page? No probe response, missing PHP extension or invalid signature for relaying agent.

И в PHP-FPM, и в CLI Dockerfiles я помещаю инструкция по документации :

RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \
&& mv /tmp/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \
&& printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini

РЕДАКТИРОВАТЬ: После запуска команды профиля у меня есть следующие журналы в моем контейнере PHP-FPM и журналы моего приложения NGINX:

PHP-FPM

[06-Dec-2016 10:01:12] WARNING: [pool www] child 9 said into stderr: "NOTICE: PHP message: PHP Warning:  Unknown: php_network_getaddresses: getaddrinfo failed: Name or service not known in Unknown on line 0"172.17.0.7 -  06/Dec/2016:10:00:46 +0000 "GET /app_dev.php" 301
[06-Dec-2016 10:01:19] WARNING: [pool www] child 12 said into stderr: "NOTICE: PHP message: PHP Warning:  Unknown: php_network_getaddresses: getaddrinfo failed: Name or service not known in Unknown on line 0"172.17.0.7 -  06/Dec/2016:10:01:12 +0000 "GET /app_dev.php" 301

NGINX

2016/12/06 10:01:19 [error] 7#7: *3 FastCGI sent in stderr: "PHP message: PHP Warning:  Unknown: php_network_getaddresses: getaddrinfo failed: Name or service not known in Unknown on line 0" while reading response header from upstream, client: 172.17.0.8, server: www.my_app.local, request: "GET http://www.my_app.local/api/stores HTTP/1.1", upstream: "fastcgi://172.17.0.6:9000", host: "www.my_app.local"2016/12/06 10:01:26 [error] 8#8: *5 FastCGI sent in stderr: "PHP message: PHP Warning:  Unknown: php_network_getaddresses: getaddrinfo failed: Name or service not known in Unknown on line 0" while reading response header from upstream, client: 172.17.0.8, server: www.my_app.local, request: "GET http://www.my_app.local/api/stores HTTP/1.1", upstream: "fastcgi://172.17.0.6:9000", host: "www.my_app.local"

3

Решение

Hum только что обнаружен, ваш контейнер php-fpm не имеет никакой связи с контейнером Blackfire.

2

Другие решения

Когда вы переопределяете имя контейнера Blackfire, вам нужно адаптировать blackfire.agent_socket=tcp://blackfire:8707 параметры, соответствующие вашему имени контейнера (то есть: blackfire.agent_socket=tcp://my_app_blackfire:8707).

0