【发布时间】:2018-04-22 11:55:37
【问题描述】:
我正在尝试将简单的 phpinfo.php 部署到 ECS(Amazon EC2 容器服务)。
有人告诉我,如果我 Dockerize 我的应用程序并将生成的映像推送到 Amazon ECR(弹性容器注册表),EC2 可以轻松地从那里获取应用程序。
我做到了,现在我遇到了另一个障碍。
在 EC2 容器中部署后,问题是我的应用程序仅位于文件夹 /var/www/html/ 中的 phpfpm 容器中,但在我的 nginx中不可见> 容器。
由于这个问题,nginx 没有交付我的应用程序。
请注意,app不在主机EC2中,也不在nginx中,只在php-fpm中。如何解决这个问题呢?请指教。谢谢
docker-compose.yml
version: '2'
services:
nginx:
image: 607167.dkr.ecr.ap-southeast-1.amazonaws.com/nginx:1
cpu_shares: 50
mem_limit: 134217728
ports:
- "80:80"
links:
- phpfpm
phpfpm:
image: 60547.dkr.ecr.ap-southeast-1.amazonaws.com/phpinfo:latest
cpu_shares: 50
mem_limit: 134217728
ports:
- "9000:9000"
- "3306:3306"
我尝试将此行添加到 yml 文件中的两个容器中,但是我的容器无法加载。
volumes:
- .:/var/www/html
请帮忙。谢谢
【问题讨论】:
-
它是在本地工作的东西吗?在您的机器上,不涉及任何 EC2 概念?要使用 aws cli 客户端访问 ECR 上的容器,请使用
aws ecr get-login -
@arvymetal 这一切都在 EC2 实例中工作。 2 个容器在 EC2 实例内
-
事实上,我并不真正了解您显示的
docker-compose.yml文件与ECS 之间的关系。 ECS 依赖于任务定义... -
另外,很抱歉造成混淆,但我不明白您的评论是否意味着 2 个容器在 EC2 实例中正常工作,或者只是它们在其中运行......在这种情况下,我建议您在本地重现该问题。
-
最后一条评论:在容器中安装卷会覆盖该位置容器中的内容。容器可以通过共享一个内容在主机上的卷进行通信,也可以通过套接字进行通信,但是一个容器不能访问另一个容器的文件系统……顺便说一下,我还容器化了一个 PHP 服务器,这很痛苦。最好将 PHP-FPM 和 NGINX 放在一起。但是我不明白为什么我在这里看到端口 3306... 如果数据库在这里,它应该被分隔到另一个容器中。
标签: php amazon-web-services docker amazon-ec2