当前位置: 首页 > 知识库问答 >
问题:

ECS-CLI卡住了创建容器

翟光赫
2023-03-14

我正在尝试使用ecs-cli命令行在AWS上获得一个工作的Docker环境。

我有一个使用Dockerfiles、docker-compose.yml、一个.env文件和一个entrypoint.sh脚本的工作本地Docker环境。容器是一个运行PHP和一系列扩展的apache webserver以及一个MySQL DB。

骨架文件结构是这样的:

./db <-- mounted by db container for persistence
./docker
./docker/database
./docker/database/Dockerfile
./docker/database/dump.sql
./docker/webserver
./docker/webserver/apache-config.conf
./docker/webserver/Dockerfile
./docker/webserver/entrypoint.sh
./docker-compose.yml
./web <!-- mounted by web server, contains all public web code
FROM mysql:5.6
ADD dump.sql /docker-entrypoint-initdb.d
FROM php:5.6-apache
RUN apt-get update 
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y zlib1g-dev nodejs gdal-bin
RUN npm install -g topojson
RUN docker-php-ext-install mysql mysqli pdo pdo_mysql zip
RUN pecl install dbase
RUN docker-php-ext-enable dbase
COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf
RUN a2enmod rewrite headers
RUN service apache2 restart
COPY entrypoint.sh /entrypoint.sh
RUN chmod 0755 /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh", "apache2-foreground"]

./docker/webserver/entrypoint.sh#!/bin/sh

mkdir /var/www/html/maps
chown www-data /var/www/html/maps
chgrp www-data /var/www/html/maps
exec "$@"

下面是docker-compose.yml

version: '2'

services:
  webserver:
    image: ACCOUNT_NUMBER.dkr.ecr.eu-west-1.amazonaws.com/project/project-webserver
    ports:
      - "8080:80"
    volumes:
      - ./web:${APACHE_DOC_ROOT}
    links:
      - db
    environment:
      - HTTP_ROOT=http://${DOCKER_HOST_IP}:${DOCKER_HOST_PORT}/
      - PHP_TMP_DIR=${PHP_TMP_DIR}
      - APACHE_LOG_DIR=${APACHE_LOG_DIR}
      - APACHE_DOC_ROOT=${APACHE_DOC_ROOT}/
      - SERVER_ADMIN_EMAIL=${SERVER_ADMIN_EMAIL}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
    env_file: .env

  db:
    user: "1000:50"
    image: ACCOUNT_NUMBER.dkr.ecr.eu-west-1.amazonaws.com/project/project-database
    ports:
      - "4406:3306"
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
    env_file: .env

要构建引用在那里的映像,请执行以下操作:

docker/database$docker build-t account_number.dkr.ecr.eu-west-1.amazonaws.com/project/project-database。

让docker登录到ECR(运行docker login命令echod到std-out):

$AWS ecr get-login--no-include-email

推送图片:

$Docker推送account_number.dkr.ecr.eu-west-1.amazonaws.com/project/project-webserver

$Docker推送account_number.dkr.ecr.eu-west-1.amazonaws.com/project/project-database

$aws ecr描述-图像-存储库-名称项目/项目-数据库

看起来都很好。

>

  • 在同一区域中创建了EC2密钥对

    [ec2-user@ip-10-0-0-122 ~]$ docker ps -a
    CONTAINER ID        IMAGE                            COMMAND             CREATED             STATUS              PORTS               NAMES
    d011f1402c26        amazon/amazon-ecs-agent:latest   "/agent"            8 minutes ago       Up 8 minutes                            ecs-agent
    

    [ec2-user@ip-10-0-1-102~]$docker记录ecs-agent

    2017-09-22T13:32:55Z [INFO] Loading configuration
    2017-09-22T13:32:55Z [INFO] Loading state! module="statemanager"
    2017-09-22T13:32:55Z [INFO] Event stream ContainerChange start listening...
    2017-09-22T13:32:55Z [INFO] Registering Instance with ECS
    2017-09-22T13:32:55Z [INFO] Registered! module="api client"
    2017-09-22T13:32:55Z [INFO] Registration completed successfully. I am running as 'arn:aws:ecs:eu-west-1:248221388880:container-instance/ba24ead4-21a5-4bc7-ba9f-4d3ba0f29c6b' in cluster 'gastrak'
    2017-09-22T13:32:55Z [INFO] Saving state! module="statemanager"
    2017-09-22T13:32:55Z [INFO] Beginning Polling for updates
    2017-09-22T13:32:55Z [INFO] Event stream DeregisterContainerInstance start listening...
    2017-09-22T13:32:55Z [INFO] Initializing stats engine
    2017-09-22T13:32:55Z [INFO] NO_PROXY set:169.254.169.254,169.254.170.2,/var/run/docker.sock
    2017-09-22T13:33:05Z [INFO] Saving state! module="statemanager"
    2017-09-22T13:44:50Z [INFO] Connection closed for a valid reason: websocket: close 1000 (normal): ConnectionExpired: Reconnect to continue
    

    我想我需要弄清楚为什么这些容器没有被初始化,但是我应该在哪里寻找,更好的是,下一步我需要做什么来使它工作?

  • 共有1个答案

    景育
    2023-03-14

    如果有其他人在这里漂泊,那么缺少的咒语是$ecs-cli compose create,它从您的compose文件构建一个ECS任务定义(假设它是兼容的...)

    $ecs-cli compose run,它们将在远程EC2计算机上构建和运行容器。

    ssh'ing到远程机器并执行“docker ps-a”应该会显示容器正在运行。或者“Docker logs[container_name]”查看错误所在...

     类似资料:
    • 以前我的MySQL pod停留在终止状态,然后我尝试使用如下命令强制删除 后来我再次尝试helm升级,我的吊舱被卡在containercreating状态,这个事件来自吊舱 任何人请帮助我解决这个问题,非常感谢。

    • 问题内容: 我正在尝试使用标准方式使用jdbc连接到Informix数据库服务器: 但是它一直尝试连接并且不会抛出错误消息(我想它尝试连接是因为它什么都不显示)。我正在使用IBM Informix驱动程序4.10.00.1534和Java 1.7。到目前为止,我一直使用这种方法连接到Informix服务器,实际上,只有一台服务器失败。我可以使用odbc通过Informix客户端连接到该服务器,但是

    • 我是java新手,我正在尝试创建一个基本的刽子手游戏,我已经为这一轮创建了方法,但我一直在创建一个布尔值,该值将使游戏进入下一轮(如果玩家输入了错误的字母,他将失去一次猜测字母的尝试;他可能只会出错10次;如果猜测,他将继续游戏)。我的代码到目前为止,我甚至尝试通过if/else语句排除布尔值,但对我来说它似乎非常愚蠢。任何帮助都是有用的。非常感谢。

    • 我已经在窗户上安装了颤振,并使用颤振医生检查了一切正常。我导入了Flutter插件。 第二次编辑: “颤振医生-V”输出

    • 我正在调试一个普通的Java应用程序,没有GUI,只是在出现问题时对主线程进行大量计算和~5次调用。基本上,它一直在局部变量表中显示“收集数据”。 以前有人遇到过这个问题吗?更改调试器是解决这个问题的唯一方法吗?

    • 我正在阅读神经网络和深度学习(前两章),我正在尝试跟进并构建自己的ANN以从MNIST数据集中对数字进行分类。 我已经抓耳挠腮好几天了,因为我的实现在从测试集中分类数字时达到了约57%的准确率(有些5734/10000)在10个纪元后(训练集的准确率在第10个纪元后停滞不前,测试集的准确率可能会因为过度拟合而恶化)。 我使用与书中几乎相同的配置:所有层完全连接的2层前馈ANN(784-30-10)