私は、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
しかし、私は、私はエージェントコンテナランニングを見ることができるで結果の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されていない理由を把握する必要があり推測しますしかし、私はどこを見ていますか、より良いことに、私は次に何をする必要がありますかこれを機能させるには?