인프런 커뮤니티 질문&답변

삽질개발초보님의 프로필 이미지

작성한 질문수

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]

강사님 강의를 베이스로 blue green을 적용해보려하는데요.

작성

·

247

0

version: "3"

services:
  web-server:
    image: nginx
    container_name: nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/:/etc/nginx/default.conf.d/
  blue:
    image: test-express
    container_name: testserver_blue
    restart: always
    expose:
      - "8080"
    volumes:
      - ./:/home/ec2-user
      - /etc/localtime:/etc/localtime
  green:
    image: test-express
    container_name: testserver_blue
    restart: always
    expose:
      - "8080"
    volumes:
      - ./:/home/ec2-user
      - /etc/localtime:/etc/localtime
요게 제가 작성한 docker-compose.yml 파일입니다 .  근데 이부분을 실행하다보면 .. 
repository does not exist or may require 'docker login': denied: requested access to the resource is denied

요 에러가 발생해서 도커로그인은 정상적으로 ec2에서 되어있는데.. 왜 그런건지를 이해를 못하겠어요.
그리고 Error: No such container: nginx 요게 자꾸떠서 이미지를 nginx를 docker pull nginx로 받아두었는데 왜 이런 이슈가 생기는지를 모르겠습니다 .. 답변부탁드릴게요 ㅠㅠ

답변 1

0

안녕하세요. 답변도우미입니다. 우선 본 강의가 평생 강의라서요. 강의 외에 각자 작성하시는 코드에 대해 저희가 답변드리는 것이 조금 무리가 있어요. 이 부분은 양해부탁드려요. 직접 작성하신 코드에 대한 의견이라서, 정확한 답변이 아닐 수는 있는데요. 가볍게라도 다음과 같이 의견드립니다.

먼저, 첫 번째 문제인 "repository does not exist or may require 'docker login': denied: requested access to the resource is denied" 에러는 아마도 test-express 이미지와 관련이 있는 것 같아요.

test-express는 표준 Docker 이미지가 아닌 것 같으니, 로컬에서 빌드하거나 로컬 Docker 레지스트리에서 가져와야 할 것 같아요.

두 번째 문제인 "Error: No such container: nginx"는 아마도 컨테이너 이름이 잘못 설정된 것 같아요. docker-compose.yml 파일에서 green 서비스의 container_nametestserver_green으로 변경해 보는 것도 좋을 것 같습니다.

yamlCopy codeversion: "3"

services:
  web-server:
    image: nginx
    container_name: nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/:/etc/nginx/default.conf.d/
  blue:
    image: test-express
    container_name: testserver_blue
    restart: always
    expose:
      - "8080"
    volumes:
      - ./:/home/ec2-user
      - /etc/localtime:/etc/localtime
  green:
    image: test-express
    container_name: testserver_green
    restart: always
    expose:
      - "8080"
    volumes:
      - ./:/home/ec2-user
      - /etc/localtime:/etc/localtime

이외에 nginx.conf 를 blue/green 에 맞게 아주 잠깐 리로드를 해줘야 하는 부분도 있거든요. 이 부분은 다음과 같은 블로그도 참고해보시면 좋을 것 같습니다. 관련해서는 추후에 쿠버네티스 강의 작업시에 설명을 드리긴 하려고 생각하고 있지만, 우선 다음 블로그로 공유드립니다.

https://medium.com/sjk5766/nginx-docker%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC%EB%A7%9B%EB%B3%B4%EA%B8%B0-8b4f8571ab24

감사합니다.