如何解决AWS中的Elastic Beanstalk仅使用我的Dockerfile,而不使用我的Docker Compose文件
我希望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
解决方法
我认为,在阅读AWS docs时,这些选择具有爆炸性:
您可以通过执行以下操作之一将您的Web应用程序作为容器化服务部署到Elastic Beanstalk:
- docker-compose.yml
- Dockerfile
如果您想继续为Dockerfile
使用docker-compose.yml
,请对其重命名或将其放在某个子文件夹中,以使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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。