如何解决将Docker容器部署到ECS时的卷未定义
我正在关注this guide,目前正尝试使用docker ecs compose up
运行我的撰写应用,但出现此错误:
% docker ecs compose up
service "feature-test-web" refers to undefined volume : invalid compose project
这是我的docker-compose.yml
:
version: '3.7'
x-web:
&web
build: ./web
volumes:
- ./web:/app
- /app/node_modules
x-api:
&api
build: ./api
volumes:
- ./api:/app
env_file:
- ./api/.env
depends_on:
- postgres
- redis
links:
- mailcatcher
services:
web:
<< : *web
environment:
- API_HOST=http://localhost:3000
ports:
- "1234:1234"
depends_on:
- api
api:
<< : *api
ports:
- "3000:3000"
stdin_open: true
tty: true
postgres:
image: postgres:11.2-alpine
volumes:
- ./pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_USER=portal
- POSTGRES_PASS=portal
ports:
- 8000:5432
restart: on-failure
healthcheck:
test: "exit 0"
redis:
image: redis:5.0.4-alpine
ports:
- '6379:6379'
sidekiq:
build: ./api
env_file:
- ./api/.env
depends_on:
- postgres
- redis
mailcatcher:
image: schickling/mailcatcher
ports:
- '1080:1080'
feature-test-api:
<< : *api
depends_on:
- selenium
- feature-test-web
feature-test-web:
<< : *web
environment:
- API_HOST=http://feature-test-api:3210
selenium:
image: selenium/standalone-chrome-debug:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
ports:
- 5901:5900
我想念什么?自行运行docker compose up
可以正常工作,我可以转到localhost:1234
来查看应用程序的运行情况。我正在尝试将其部署到AWS上,但是如果我做错了这很难做到,那么对正确方法的任何指点也将不胜感激。
解决方法
如评论部分所述,卷挂载在 ECS 上不起作用,因为集群没有您的代码的本地副本。
所以作为第一步,删除整个卷部分。
其次,您需要首先从您的代码中构建一个 docker 镜像,并将其推送到您喜欢的 docker 注册表,然后在您的 docker compose 上链接到它,如下所示
x-api:
&api
image: 12345.abcd.your-region.amazonaws.com/your-docker-repository
env_file:
- ./api/.env
depends_on:
- postgres
- redis
我的回答 here 可以让您更深入地了解我如何部署到 ECS。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。