从docker-compose到AWS

我有一个docker-compose.yml

 version: '2' services: scheduler: build: context: . dockerfile: Dockerfile hostname: dask-scheduler ports: - "8786:8786" - "8787:8787" command: dask-scheduler worker: build: context: . dockerfile: Dockerfile hostname: dask-worker ports: - "8789:8789" command: dask-worker scheduler:8786 

Dockerfile

 FROM continuumio/miniconda3 RUN apt-get update && apt-get install -y build-essential freetds-dev RUN mkdir project COPY requirements.txt /project/requirements.txt COPY src/ /project/src COPY setup.py /project/setup.py WORKDIR /project RUN pip install -r requirements.txt RUN python -m nltk.downloader punkt 

我可以通过docker-compose up在本地使用它。 接下来,我想在多个EC2节点上具有相同的组合。 所以,我试图用ecs-cli但没有成功。 我按照指示,但迄今没有成功。 我得到的错误是:

 WARN[0000] Skipping unsupported YAML option... option name=networks WARN[0000] Skipping unsupported YAML option for service... option name=build service name=scheduler WARN[0000] Skipping unsupported YAML option for service... option name=networks service name=scheduler WARN[0000] Skipping unsupported YAML option for service... option name=build service name=worker WARN[0000] Skipping unsupported YAML option for service... option name=networks service name=worker ERRO[0000] Error registering task definition error="ClientException: Container.image should not be null or empty.\n\tstatus code: 400, request id: 1966ba7f-dbf6-11e7-a974-15857d851822" family="cs_emails" ERRO[0000] Create task definition failed error="ClientException: Container.image should not be null or empty.\n\tstatus code: 400, request id: 1966ba7f-dbf6-11e7-a974-15857d851822" FATA[0000] ClientException: Container.image should not be null or empty. status code: 400, request id: 1966ba7f-dbf6-11e7-a974-15857d851822 

说实话,我不知道如何解决这个问题。 任何想法?

编辑:试图将图像推送到ECR

正如在这个答案build议我build立的形象,并推到ECR 。 另外我改了yml

 version: '2' services: scheduler: image: xxxx.dkr.ecr.eu-west-1.amazonaws.com/dask-poc hostname: dask-scheduler ports: - "8786:8786" - "8787:8787" command: dask-scheduler worker: # build: # context: . image: xxxx.dkr.ecr.eu-west-1.amazonaws.com/dask-poc hostname: dask-worker ports: - "8789:8789" command: dask-worker scheduler:8786 

现在, ecs-cli compose --file docker-compose.yml --cluster dask-poc-cluster --verbose up yield:

 INFO[0000] Using ECS task definition TaskDefinition="dir_name_of_projec:1" ERRO[0000] Error running tasks error="InvalidParameterException: No Container Instances were found in your cluster.\n\tstatus code: 400, request id: 809171a2-dc02-11e7-bb31-a98d8b09e45a" task definition="arn:aws:ecs:eu-west-1:345891532217:task-definition/dir_name_of_project:1" FATA[0000] InvalidParameterException: No Container Instances were found in your cluster. status code: 400, request id: 809171a2-dc02-11e7-bb31-a98d8b09e45a 

您必须使用docker compose v3或堆栈文件在节点环境中使用。