2017-09-22 3 views
0

私は、ecs-cliコマンドラインを使用してAWS上で動作するDocker環境を取得しようとしています。ecs-cliがコンテナを作成していました

私は、Dockerfiles、docker-compose.yml、.envファイル、およびentrypoint.shスクリプトを使用して、動作中のローカルDocker環境を持っています。このコンテナは、PHPを実行するApache Webサーバーと、拡張機能と、MySQLデータベースです。

スケルトンファイル構造は、このようなものです:

./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 

ここ2つのドッカーファイルです:

./docker/database/Dockerfile

FROM mysql:5.6 
ADD dump.sql /docker-entrypoint-initdb.d 

./docker/webserver/Dockerfileは

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 "[email protected]" 
ここ

ドッキングウィンドウ-コンです!:entrypoint.shはに書き込むApacheのWebディレクトリにあるいくつかのディレクトリを作成します。

  • C: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 
    

    私が参照されるイメージを構築するにはプロファイル権限で〜/ .aws/credentialsにキーを設定し、ローカルENVを を使用して設定します。AWS_PROFILE = my-project-profile

  • 次に、ローカルで次のようにイメージを構築しました。 :

    ドッカー/ウェブサーバー$ドッカービルド-t ACCOUNT_NUMBER.dkr.ecr.eu-west-1.amazonaws.com/project/project-webserver。

    ドッカー/データベース$ dockerビルド-t ACCOUNT_NUMBER.dkr.ecr.eu-west-1.amazonaws.com/project/project-database。

  • ガットのドッキングウィンドウは、(アウトはstdするecho'dドッカloginコマンドを実行している)ECRにログイン

    :リポジトリを作成し

    $ AWS ECR GET-ログイン--no-含ま-メール

  • $ AWS ECR作成・リポジトリ--repository名プロジェクト/プロジェクトのウェブサーバ

    $ AWS ECR作成・リポジトリ--repository名プロジェクト/プロジェクト・データベース

  • 枚の
  • プッシュ画像:

    $]ドッキングウィンドウのプッシュドッキングウィンドウプッシュ$

    ACCOUNT_NUMBER.dkr.ecr.eu-west-1.amazonaws.com/project/project-webserver ACCOUNT_NUMBER.dkr.ecr.eu- west-1.amazonaws。COM /プロジェクト/プロジェクト・データベース

  • 彼らがそこにあるチェック:

    $ AWS ECR --repository名プロジェクト/プロジェクトのウェブサーバを、画像に説明

    $ AWS ECR説明、画像--repository -nameプロジェクト/プロジェクト - データベース

すべてがうまく見えます。

$ ECS-CLIのconfigure --region EU-西-1 --clusterプロジェクト $猫〜/ .ecs/configに

同じ地域でEC2キーペアを作成し

  • はECSにそれらを実行しようとしました:

    $ ECS-CLIアップ--keypairプロジェクト--capability-IAM --size

--force 1 --instance型t2.micro

しかし、私は、私はエージェントコンテナランニングを見ることができるで結果のEC2インスタンスとSSHのセキュリティグループ、ない他のポート22を開く場合:

[[email protected] ~]$ 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〜] $]ドッキングウィンドウのログECS-エージェント

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 

のために私は、これらのコンテナがinitalisingされていない理由を把握する必要があり推測しますしかし、私はどこを見ていますか、より良いことに、私は次に何をする必要がありますかこれを機能させるには?

答えて

0

誰がここに漂流実行される場合には、不足している呪文を構築するあなたのコンファイルからECSのタスク定義を作成します $ ecs-cli compose create (それは互換性があると仮定...)

$ecs-cli compose run たとリモートEC2マシンでコンテナを実行します。

リモートマシンにSSH接続し、「docker ps -a」を実行すると、コンテナが実行中であることが示されます。または「ドッカーのログ[container_name]」で何が間違っているかを確認してください...

関連する問題