Amazon web services AWS中的Elastic Beanstalk仅使用我的Dockerfile,而不是Docker Compose文件

Amazon web services AWS中的Elastic Beanstalk仅使用我的Dockerfile,而不是Docker Compose文件,amazon-web-services,docker,dockerfile,amazon-elastic-beanstalk,docker-container,Amazon Web Services,Docker,Dockerfile,Amazon Elastic Beanstalk,Docker Container,我希望Elastic Beanstalk在运行EC2实例时调用我的docker compose文件,以便在docker容器中启动redis。它没有这样做。当我使用AWS之外的脚本运行docker compose文件时,我的应用程序运行得很好。我已经看过AWS上的文档,但对于EB是如何找到我的docker compose文件的,还没有一个明确的答案。我很想向任何有经验的人请教如何解决这个问题 docker compose version: '3' services: web: imag

我希望Elastic Beanstalk在运行EC2实例时调用我的docker compose文件,以便在docker容器中启动redis。它没有这样做。当我使用AWS之外的脚本运行docker compose文件时,我的应用程序运行得很好。我已经看过AWS上的文档,但对于EB是如何找到我的docker compose文件的,还没有一个明确的答案。我很想向任何有经验的人请教如何解决这个问题

docker compose

version: '3'
services:
  web:
    image: filamentgraphql/filament-prod
    container_name: 'filament-prod-hot'
    ports: 
      - '4000:4000'
    volumes:
      - .:/usr/src/app
    command: npm run build
  redis-server:
    image: 'redis'
    volumes:
      - "./data/redis:/usr/src/app/data"


Dockerfile

FROM node:12.16.1
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install
RUN npm run build
EXPOSE 4000
ENTRYPOINT node ./server/server.js

当我读到以下内容时,我认为这些选项是爆炸性的:

通过执行以下操作之一,您可以将web应用程序作为容器化服务部署到Elastic Beanstalk上:

  • docker-compose.yml
  • Dockerfile
如果您想继续为您的
docker compose.yml
使用
Dockerfile
,请将其重命名或放置在某个子文件夹中,以便EB不会找到
Dockerfile

,这将起作用

version: '3'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    image: filamentgraphql/filament-prod
    container_name: 'filament-prod-hot'
    ports: 
      - '4000:4000'
    volumes:
      - .:/usr/src/app
    command: npm run build
  redis-server:
    image: 'redis'
    volumes:
      - "./data/redis:/usr/src/app/data"
…但它将两次重建docker容器。为了避免这种情况,您可以将
Dockerfile
重命名为
Dockerfile aws
,然后执行以下操作

    build:
      context: .
      dockerfile: Dockerfile-aws