TIL - 2021.1.25

Wanna be __·2021년 1월 25일
0

TIL

목록 보기
7/45
post-thumbnail

Today, I Learned

  1. docker-compose.yml 파일의 구성
    • 파일의 역할: multi comtainer 기반의 docker를 한 세트로 묶어주는 역할.
    • 여러 명령어들
    volumes: // host 폴더와 container가 공유할 파일등을 설정할 수 있다. .env 파일등을 이런식으로 공유하는듯
    services: // 각 service를 설정한다
    	[service-name]:
    		image: // image 혹은 build 위치를 지정해준다
    		container_name:  // 위에서 정한 service-name과 다른점은 잘 모르겠다..
    		restart: "on-failure" // 재시작 조건 설정
    		ports:
      		- 80:80 // host의 포트 : containet의 포트를 맵핑한다.
  2. linux 기반 docker와 관련된 위치
    • elastic beanstalk ec2내의 위치 -> var/app/current
    • 그에 대한 docker container 위치
      - nginx의 index파일 위치 -> usr/share/nginx/html
      - nginx의 conf파일 위치 -> etc/nginx/conf.d/
      - nginx의 defaualt conf 파일 위치 -> etc/nginx/nginx.conf (여기서 위에 위치에 있는거 include함)
  3. EB + Docker Multicontainers + React + Nginx 각종 Trouble shooting
    1. No ecs task definition (or empty definition file) found in environment
      -> git commit 문제
    2. Error response from daemon: create ./conf/conf.d/default.conf: "./conf/conf.d/default.conf" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]"
      -> compose-transpose 는 sourcepath에 ./을 그대로 둔다. 앞에 점 제거 후 커밋 후 다시 deploy
    3. image build할때 build 내부 파일들도 같이 build 되도록 해야함
  4. 아직 해결하지 못한 문제
+ 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)

이게 제일 골치아프다...

Today, I Did

계속 고군분투 중이다. Multi Container를 위한 docker-compose.yml 파일 작성, Dockerrun.aws.json 작성 방법등 메커니즘에 대한 이해는 충분히 되었다. 이제 여기를 참고하여 backend, frontend 각각 nginx(혹은 django는 gunicorn)을 통해 접근하는 구조 조직과 CI/CD 파이프라인 구축을 조금 많이 생각해보아야겠다.

profile
성장하는 개발자

0개의 댓글