为Amazon ECS设置Docker撰写文件的端口



我正在按照本教程使用docker compose将我的应用程序部署到AWS。

如果我使用docker compose up,我得到这个错误:

published port can't be set to a distinct value than container port: incompatible attribute

这是docker-compose.yml:

version: "3"
services:
www:
image: my_image_path:latest
ports:
- "8001:80"
volumes:
- ./www:/var/www/html/
links:
- db
networks:
- default
phpmyadmin:
image: phpmyadmin/phpmyadmin:4.8
links:
- db:db
ports:
- 8000:80
environment:
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test

我有两个服务在容器中侦听端口80,所以我不能在它们中都使用80:80

任何想法?

您需要更改一个docker映像以侦听另一个端口。Docker-compose部署到AWS Fargate, Fargate中有一些限制会阻止您的配置工作:

  1. 单个Fargate任务中的多个容器必须侦听不同的端口。
  2. 发布的端口不能与容器侦听的端口不同。如果您需要更改客户端连接到的端口,可以在ALB/Target Group设置中完成,而不是在容器设置中完成。

由于您的映像之一是phpmyadmin,我建议简单地向该映像APACHE_PORT: 8000添加一个环境变量,这将更改该容器中的Apache web服务器侦听端口8000的端口。然后您可以将该容器上的端口映射设置为8000:8000,并将www容器上的端口映射设置为80:80

最新更新