Я пытался установить API-платформу: https://api-platform.com/docs/distribution/
после запуска вижу в логе "api-platform-242_cache-proxy_1"
│ Error: │
│ Message from VCC-compiler: │
│ Expected return action name. │
│ ('/usr/local/etc/varnish/default.vcl' Line 67 Pos 13) │
│ return (miss); │
│ ------------####-- │
│ Running VCC-compiler failed, exited with 2 │
│ VCL compilation failed
Если я использую API (пост-приветствие), код ответа 500 "hydra:description": "Ошибка cURL 6: Не удалось разрешить хост: cache-proxy (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)", "след": [
Тем не менее объект все еще вставлен.
Кроме того, я попробовал API-платформу без докера (Apache). Я удалил строку VARNISH_URL=http://кэш-прокси в файле .env. Тогда код возврата 500 с «Ошибка cURL 3: искаженный формат (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)»
Есть ли у вас какие-либо идеи?
С уважением Люди
Снять лак с api_platform.yaml
Это работает, дистрибутив полностью работает в докере. Он призван помочь вам в разработке, а не в развертывании. Если вы хотите развернуть его на Apache, виртуальном хостинге, AWS, Microwave или где-то еще, в зависимости от ваших потребностей, вам нужно изменить. То же самое с переменными окружения.
Но я развертываю его в Docker. Я вижу контейнер "cache-proxy", который должен был предоставить Varnish. Я вижу в журналах создания докеров ту же ошибку, что и @Ludi. И да, отключение Varnish работает, но для меня это неудовлетворительный ответ, и я думаю, что это неудовлетворительный ответ на поставленный выше вопрос в общем смысле.
На самом деле я даже не могу сказать, что это так работает. cache-proxy
терпит неудачу, поэтому h2-proxy
терпит неудачу и, следовательно, HTTPS-доступ к API не работает, и в результате компонент администратора не работает, потому что он каким-то образом жестко запрограммирован, чтобы он пытался подключиться к API через HTTPS на порту 8443.
Является ли контейнер докера на вашем локальном компьютере. Это прекрасно работает для локальной разработки.
У меня есть все на моем локальном компьютере с Ubuntu 18.04, и у меня такая же проблема с другой установкой Ubuntu 18.04. И, пожалуйста, не говорите мне «это работает», когда я ясно вижу, что это не так.
У меня он работает на Docker для Windows, а также на арке Manjaro. Попробуйте пересобрать с помощью сборки docker-compose.
Я считаю, что вы должны удалить или закомментировать VARNISH_URL=http://cache-proxy
из .env
файла, а не из api_platform.yaml
, так как ваш .env
может измениться и зависит/должен зависеть от хоста, а конфигурация (.yaml
) не должна.
См.: https://symfony.com/doc/current/configuration.html#the-env-file-environment-variables
There is also a .env file which is loaded and its contents become environment variables. This is useful during development, or if setting environment variables is difficult for your deployment.
В api_platform.yaml
вы ДОЛЖНЫ закомментировать весь http_cache
раздел, иначе вы будете продолжать получать ошибки cURL о искажении от guzzle.
{ "@context": "/api-platform/api/public/contexts/Error", "@type": "hydra:Error", "hydra:title": "An error occurred", "hydra:description": "cURL error 3: <url> malformed (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)", "trace": [ { "namespace": "", "short_class": "", "class": "", "type": "", "function": "", "file": "...\\api-platform\\api\\vendor\\guzzlehttp\\guzzle\\src\\Handler\\CurlFactory.php", "line": 186, "args": [] },
Эффект тот же.
Обратите внимание, что контейнер h2-proxy
зависит от контейнера cache-proxy
. Так что (по крайней мере, в моем случае) с неудачным Varnish у меня нет HTTPS, и в результате, например, компонент Admin тоже выходит из строя.
Я проверил вчера, и достаточно закомментировать только Varnish, хотя я не проверял, работает ли какое-либо HTTP-кеширование. Я также использовал автономную версию tar.gz, поэтому она не работает точно так же, как docker one ex. HTTPS вообще не работает.
У меня была такая же проблема, и я решил ее!
Как указано здесь: https://github.com/api-платформа/api-платформа/issues/777, проблема в правах на каталоги/файлы, поэтому вместо загрузки архива zip или tar.gz я клонировал репо,
Все команды, которые я сделал (после установки Docker для Windows и включения общих дисков в настройках Docker для Windows):
cd my_parent_directory
git clone https://github.com/api-platform/api-platform.git
cd api-platform
docker-compose pull
docker-compose up -d
А когда захожу на https://локальный:8443 все работает!!
Я надеюсь, это поможет вам :)
Ну... у меня была та же проблема, и удаление Varnish из конфигурации решило ее, но... если дистрибутив предназначен для простого введения в предварительную настройку, почему он с самого начала неправильно настроен? Я новичок в Докере, про Varnish слышал, но не более того, опыта с Symfony4 пока нет (но работаю с Sf3). Поэтому меня очень расстраивает, когда предварительно настроенное приложение на основе Docker не работает с самого начала. Что не так с раздачей? Как включить кеширование лака? Контейнер отсутствует или неправильно настроен?