我试图理解如何使用aws ecs服务,并且无法理解失败的原因--在本地按预期工作,但在使用docker上下文ecs创建过程中失败?图像源为ecr。设置所有creds,例如,创建包含单个默认nginx映像的ecs任务,ecs也按预期工作。我试过发射类型Fargate和EC2。
我的命令设置为在ecs上下文中运行docker-compose.yml:
docker context create ecs temp
docker context use temp
docker compose -p "temp" updocker-compose.yml
version: '3'
services:
reverseproxy:
image: XXXXX.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
ports:
- 80:80
- 8081:8081
- 8082:8082
restart: always
apache:
depends_on:
- reverseproxy
# networks:
# - bridge-network
image: XXXXX.dkr.ecr.us-east-1.amazonaws.com/apache:latest
restart: always
blue:
depends_on:
- reverseproxy
# networks:
# - bridge-network
image: XXXXX.dkr.ecr.us-east-1.amazonaws.com/blue:latest
restart: alwaysnginx文档
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream docker-apache {
server apache:80;
}
upstream docker-nginx-balancing {
server test:80;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
server {
listen 8081;
server_name XXX.sytes.net;
location / {
proxy_pass http://docker-apache;
proxy_redirect off;
}
}
server {
listen 8082;
server_name XXX.sytes.net;
location / {
proxy_pass http://docker-nginx-balancing;
proxy_redirect off;
}
}
server {
root /var/www/html;
index index.html;
server_name XXX.sytes.net;
location = /youtube {
return 301 https://www.youtube.com;
}
}
}测试:
events {
worker_connections 1024;
}
http {
server {
root /var/www/html;
index index.html;
server_name XXX.sytes.net;
location / {
try_files $uri $uri/ =404;
}
}
}nginx的Dockerfile:
FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80/tcp
STOPSIGNAL SIGQUIT
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]阿帕奇
FROM 8ct8pus/apache-php-fpm-alpine:1.4.3
CMD ["apachectl", "-D", "FOREGROUND"]测试
FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]发布于 2022-11-21 15:02:53
即使您在您的机器或Linux机器上创建了docker context,它也不会像您预期的那样在ECS上工作。
您可以自己在本地测试您的对接者撰写应用程序,然后您可以将您的应用程序与您所知道的docker-compose.yml一起部署到ECS上。
但是,您在这里遗漏了一件重要的事情,您需要在ecs-params.yml文件中指定创建任务定义的参数,以便运行您的ECS服务。
请参阅ECS README.md上ecs参数的选项。
这个自述文件指示您如何用示例编写ecs-params.yml,如下所示:
version: 1
task_definition:
ecs_network_mode: host
task_role_arn: myCustomRole
services:
logging:
essential: false
wordpress:
cpu_shares: 100
mem_limit: 500m
mysql:
cpu_shares: 105
mem_limit: 500m
mem_reservation: 450m
docker_volumes:
- name: database_volume
scope: shared
autoprovision: true
driver: local我使用ecs-cli命令使用docker部署了我的应用程序,它提供的命令与您可以用来编写自己的docker-compose文件的命令相同。
例如,项目目录看起来很简单
.
├── Jenkinsfile
├── my-app-front # Contains Dockerfile
├── my-app-backend # Contains Dockerfile
├── docker-compose.yml
├── ecs-params.yml
└── package-lock.json然后,您可以使用ecs-cli命令按以下顺序部署应用程序:
您可以在GitHub README.md文件中找到ecs命令的详细信息。
cli configureecs-cli configure profiledocker compose -f docker-compose.yml build --no-cacheecs-cli push {your-ECR-repo-url}ecs-cli upecs-cli compose service up加号:我在Jenkinsfile步骤中指定了所有命令,所以一旦您按下代码,Git钩子将触发我的Jenkins作业,以便它能够顺利地部署到ECR中,并提供ECS服务。
https://stackoverflow.com/questions/74514434
复制相似问题