ecs-cli 명령 줄을 사용하여 AWS에서 작동중인 Docker 환경을 얻으려고합니다.ecs-cli가 컨테이너 생성을 방해했습니다.
Dockerfiles, docker-compose.yml, .env 파일 및 entrypoint.sh 스크립트를 사용하는 로컬 로컬 Docker 환경이 있습니다. 컨테이너는 PHP와 많은 확장 기능을 수행하는 아파치 웹 서버와 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
는 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 #/빈/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은으로 작성하는 아파치의 웹 디렉토리의 일부 디렉토리를 생성합니다.
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
I이 참조 이미지를 빌드하려면 관리자 권한으로 AWS IAM 사용자를 reated와 ~/.aws에 키를 설정/프로파일 이름으로 자격 증명, 다음 설정 수출 AWS_PROFILE를 사용하여 로컬 ENV는 = 내 프로젝트 프로파일
그런 다음 로컬 이미지를 구축 다음과 같이 :
도커/웹 서버 $ 도커 빌드 -t ACCOUNT_NUMBER.dkr.ecr.eu-west-1.amazonaws.com/project/project-webserver.
도커/데이터베이스 $ 도커 빌드 -t ACCOUNT_NUMBER.dkr.ecr.eu-west-1.amazonaws.com/project/project-database.
$ AWS ECR GET-로그인 포함 --no--이메일을
생성됨의 repos :
있어 고정 표시기 (아웃을 수 std하기 위해 고정 표시기 로그인 명령 echo'd을 실행) ECR에 로그인 :
$ 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 프로젝트/프로젝트 데이터베이스
모두 괜찮아 보인다.
- 는 같은 지역에있는 EC2 키 쌍을 생성
$ ECS-CLI 구성 --region 유럽 연합 (EU) - 서 - 1 --cluster 프로젝트 $ 고양이 ~/.ecs/설정
는 ECS에 그들을 실행 시도 :
이$ ECS-cli를 --keypair 프로젝트 --capability - 스피 --size 1 --instance 형을가 --force 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
나는 로그에 나쁜 아무것도 표시하지 않습니다 에이전트에 대한
고정 표시기를 기록 $[@의 IP-10-0-1-102 ~는 EC2 사용자]
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되지 않는 이유를 알아낼 필요가 생각 ECS을 에이전트 , 그러나 나는 어디에서보아야합니까, 더 나은 여전히, 다음에해야 할 일은 무엇입니까? 이것을 작동 시키려면? 경우 다른 사람에