Docker + PHP + RabbitMQ

问题描述 投票:0回答:1

我正在尝试在Docker容器中运行php程序,以侦听RabbitMQ的数据。

这是我到目前为止所做的:

  • 使用作曲家的多阶段构建:1.9.3,php:7.4.3-cli
  • 已安装phpAmqpLib / php-amqplib

[运行程序时,我收到“警告:require(./ vendor / autoload.php):无法打开流:/usr/src/myapp/test.php中第3行上没有此类文件或目录”

我运行了“ composer install”,但仍然出现错误,请尽可能提供帮助。

# PHP dependency manager
FROM composer:1.9.3 AS composer

FROM php:7.4.3-cli

# Copies dependency manager into PHP image
COPY --from=composer /usr/bin/composer /usr/local/bin/composer

# Install RabbitMQ PHP client
RUN apt-get -qq update && apt-get -qq -y install \
    git \
    libzip-dev \
    unzip \
    && docker-php-ext-install \
       sockets \
       zip \
    && composer require php-amqplib/php-amqplib \

    && composer install
# Copies files from a source directory into the containers filesystem
COPY . /usr/src/myapp
CMD ["php", "/usr/src/myapp/test.php"]

test.php

<?php
require 'vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;

$connection = new AMQPStreamConnection('messaging', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C\n";

$callback = function ($msg) {
    echo ' [x] Received ', $msg->body, "\n";
};

$channel->basic_consume('hello', '', false, true, false, false, $callback);

while ($channel->is_consuming()) {
    $channel->wait();
}

$channel->close();
$connection->close();

编辑:test.php的第1行以前使用的是require_once __DIR__ . '/vendor/autoload.php';,实际上是在根目录中安装了vendor时指向当前目录。

php docker rabbitmq
1个回答
0
投票

test.php的第1行先前使用了require_once DIR。 '/vendor/autoload.php';并实际上在根目录中安装了vendor时指向当前目录。

© www.soinside.com 2019 - 2024. All rights reserved.