首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Neos CMS的AWS的bref.sh php容器

带有Neos CMS的AWS的bref.sh php容器
EN

Stack Overflow用户
提问于 2021-04-14 22:29:29
回答 1查看 517关注 0票数 0

我很难让Neos (一个基于php的cms)在AWS的坞容器中运行。我想我在某个地方有个误会,希望有人能帮忙。

我到目前为止所做的:

composer.json

  • I的
  1. I调整了Neos,以便将所有缓存文件写入tmp文件夹
  2. ,我在中添加了bref和https://mnapoli.fr/aws-lambda-php-docker-containers/
    1. I -php-扩展名包,创建了一个docker文件,很简单,正如Mattheu Naploli的博客文章所示:https://mnapoli.fr/aws-lambda-php-docker-containers/
    2. I创建了一个cloudformation模板以使用sam local start-api

Dockerfile:

代码语言:javascript
复制
FROM bref/php-74-fpm

COPY . /var/task

# Start Bref's runtime client
CMD _HANDLER=Web/index.php /opt/bootstrap

template.yml

代码语言:javascript
复制
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  neos-demo-lambda

  Sample SAM Template for neos-demo-lambda

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 3

Resources:
  Neos:
    Type: AWS::Serverless::Function
    Properties:
      Description: Show neos demo
      PackageType: Image
      ImageUri: neos7.demo.lambda.php74:latest
      #Handler: "Web/index.php /opt/bootstrap"
      #Handler: "Web/index.php"
      MemorySize: 1024
      Timeout: 360
      Environment:
        Variables:
          FLOW_CONTEXT: 'Production'
          FLOW_PATH_TEMPORARY_BASE: '/tmp/neos'
          FLOW_PATH_DATA_BASE: '/tmp/Data'
          BREF_AUTOLOAD_PATH: '/var/task/Packages/Libraries/autoload.php'
          AWS_S3_BUCKET_STORAGE: 'neos-lambda-demo-private'
          AWS_S3_BUCKET_TARGET: 'neos-lambda-demo-public'
          AWS_CLOUDFRONT_BASE_URI: ''
          AWS_REDIS_HOST: ''

      Events:
        htmlHttpApi:
          Type: HttpApi
          TimeoutInMillis: 28000

    Metadata:
      DockerTag: neos7.lambda.demo
      DockerContext: ./Web/index.php
      Dockerfile: Dockerfile

sam local start-api响应

代码语言:javascript
复制
entrypoint requires the handler name to be the first argument
time="2021-04-14T22:11:48.093" level=error msg="Init failed" InvokeID= error="Runtime exited with error: exit status 142"
time="2021-04-14T22:11:48.093" level=error msg="INIT DONE failed: Runtime.ExitError"
Invalid lambda response received: Lambda response must be valid json
2021-04-15 00:11:48 127.0.0.1 - - [15/Apr/2021 00:11:48] "GET / HTTP/1.1" 502 -

我不明白的是,即使php提供了一个5xx错误,但仍然会有一个有效的json返回。我迷路了..。即使情况并非如此,我如何调试这个问题呢?

最后,我必须创建自己的坞映像,因为Neos太大,不能使用bref层,我需要相当多的php扩展。如果我能理解当前的问题,我可以解决这个问题,并为每个人提供一个工作容器。

我还有几个问题要问,在这个场景中,我是否有一个web应用程序并且使用了一个容器,我是否需要用composer安装bref包?这一点在博客文章中还不清楚。另外,我是否必须在无服务器/sam中设置Handler,如果需要,那么哪一个是正确的字符串,因为Web/index.php是Neos中的路径?

一般来说,Neos在AWS上的工作会很棒。我的设置是:

具有静态文件行为的

  1. CloudFront,以及其他用于lambda
  2. Redis的行为,用于存储来自S3的缓存文件,以便在大型网站

上搜索和提高性能

一旦这起作用,我将免费发布所有信息,让Neos社区实现这一目标。

希望有人能帮忙..。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-04-15 07:43:54

你能试试这个吗?

代码语言:javascript
复制
FROM bref/php-74-fpm

# Include any extension you want, for example:
#COPY --from=bref/extra-gd-php-74:0.9.5 /opt /opt

ADD . $LAMBDA_TASK_ROOT

CMD [ "index.php" ]

自本文以来,格式已经简化(请参阅https://gist.github.com/mnapoli/f911a50c7aab77690e6cdde157812265)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67099897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档