volumes: // host 폴더와 container가 공유할 파일등을 설정할 수 있다. .env 파일등을 이런식으로 공유하는듯
services: // 각 service를 설정한다
[service-name]:
image: // image 혹은 build 위치를 지정해준다
container_name: // 위에서 정한 service-name과 다른점은 잘 모르겠다..
restart: "on-failure" // 재시작 조건 설정
ports:
- 80:80 // host의 포트 : containet의 포트를 맵핑한다.
+ RETRY=0
+ initctl start eb-ecs EB_EVENT_FILE=/tmp/eventsfile20210125-7173-7jpn25
initctl: Job failed to start
+ '[' -f /etc/elasticbeanstalk/.eb-ecs-start-no-retry ']'
+ warn 'Failed to start ECS task, retrying...'
+ echo 'Failed to start ECS task, retrying...'
Failed to start ECS task, retrying...
+ eventHelper.py --msg 'Failed to start ECS task, retrying...' --severity WARN
+ RETRY=1
+ sleep 3
+ '[' 1 -gt 1 ']'
+ initctl start eb-ecs EB_EVENT_FILE=/tmp/eventsfile20210125-7173-7jpn25
initctl: Job failed to start
+ '[' -f /etc/elasticbeanstalk/.eb-ecs-start-no-retry ']'
+ warn 'Failed to start ECS task, retrying...'
+ echo 'Failed to start ECS task, retrying...'
Failed to start ECS task, retrying...
+ eventHelper.py --msg 'Failed to start ECS task, retrying...' --severity WARN
+ RETRY=2
+ sleep 3
+ '[' 2 -gt 1 ']'
+ error_exit 'Failed to start ECS task after retrying 2 times.' 1
+ error 'Failed to start ECS task after retrying 2 times.'
+ echo 'Failed to start ECS task after retrying 2 times.'
Failed to start ECS task after retrying 2 times.
+ eventHelper.py --msg 'Failed to start ECS task after retrying 2 times.' --severity ERROR
+ exit 1 (ElasticBeanstalk::ExternalInvocationError)
caused by: + . /opt/elasticbeanstalk/hooks/common.sh
+ RETRY=0
+ initctl start eb-ecs EB_EVENT_FILE=/tmp/eventsfile20210125-7173-7jpn25
initctl: Job failed to start
+ '[' -f /etc/elasticbeanstalk/.eb-ecs-start-no-retry ']'
+ warn 'Failed to start ECS task, retrying...'
+ echo 'Failed to start ECS task, retrying...'
Failed to start ECS task, retrying...
+ eventHelper.py --msg 'Failed to start ECS task, retrying...' --severity WARN
+ RETRY=1
+ sleep 3
+ '[' 1 -gt 1 ']'
+ initctl start eb-ecs EB_EVENT_FILE=/tmp/eventsfile20210125-7173-7jpn25
initctl: Job failed to start
+ '[' -f /etc/elasticbeanstalk/.eb-ecs-start-no-retry ']'
+ warn 'Failed to start ECS task, retrying...'
+ echo 'Failed to start ECS task, retrying...'
Failed to start ECS task, retrying...
+ eventHelper.py --msg 'Failed to start ECS task, retrying...' --severity WARN
+ RETRY=2
+ sleep 3
+ '[' 2 -gt 1 ']'
+ error_exit 'Failed to start ECS task after retrying 2 times.' 1
+ error 'Failed to start ECS task after retrying 2 times.'
+ echo 'Failed to start ECS task after retrying 2 times.'
Failed to start ECS task after retrying 2 times.
+ eventHelper.py --msg 'Failed to start ECS task after retrying 2 times.' --severity ERROR
+ exit 1 (Executor::NonZeroExitStatus)
이게 제일 골치아프다...
계속 고군분투 중이다. Multi Container를 위한 docker-compose.yml 파일 작성, Dockerrun.aws.json 작성 방법등 메커니즘에 대한 이해는 충분히 되었다. 이제 여기를 참고하여 backend, frontend 각각 nginx(혹은 django는 gunicorn)을 통해 접근하는 구조 조직과 CI/CD 파이프라인 구축을 조금 많이 생각해보아야겠다.