Inflearn brand logo image

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

임다정님의 프로필 이미지
임다정

작성한 질문수

비전공자도 이해할 수 있는 Docker 입문/실전

마지막 강의 질문있습니다.

작성

·

41

0

services:
  instagram-server:
    image: 002177417362.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest
    ports:
      - 8080:8080
    depends_on:
      my-db:
        condition: service_healthy
      my-cache-server:
        condition: service_healthy
  my-db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: pwd1234
      MYSQL_DATABASE: mydb
    volumes:
      - ./mysql_data:/var/lib/mysql
    ports:
      - 3306:3306
    healthcheck:
      test: [ "CMD", "mysqladmin", "ping" ]
      interval: 5s
      retries: 10
  my-cache-server:
    image: redis
    ports:
      - 6379:6379
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
      interval: 5s
      retries: 10

aws ecr에서 폴더 만든후에 compose.yml을 따로 작성했는데 my-db에 mysql이랑 my-cache-server redis는 도커허브에서 이미지를 가져오는건가요?

답변 1

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 다정님 ! 마지막 강의까지 잘 따라오셨네요~~

질문 주신 내용에 대해서 답변 드려볼게요 !

 

"mysql이랑 my-cache-server redis는 도커허브에서 이미지를 가져오는건가요?"

-> 네 맞습니다 ! DockerHub(공식 Docker 이미지 저장소)에서

mysql과 redis 이미지를 다운로드해서 사용해요 ~

별도로 image에 경로를 지정해주지 않으면 기본적으로는 DockerHub에서 pull 해오죠 :)

 

반대로 ECR 이미지는 아래와 같이 AWS ECR에 직접 푸시한 이미지를 사용해요 ~

instagram-server:

image: 002177417362.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest

image 경로가 ECR 도메인이기 때문에 AWS ECR에서 직접 pull 해오는 방식이죠 :)

 

추가로 궁금한 점 있으면 언제든 질문 주세요~ 😄

임다정님의 프로필 이미지
임다정
질문자

실습을 똑같이 따라했는데 저는 mysql이랑 redis 이미지를 도커허브에서 가져올수없다고 하던데..이유를잘모르겠습니다.

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요! 다정님 !

이미지를 DockerHub에서 가져올 수 없는 문제에 대해

차근히 점검하는 법 안내드려볼게요 ~

크게 아래와 같은 3가지 원인들에 대해 확인해보시는걸 추천드려요 !

 

[1] 네트워크 문제

네트워크 연결 상태 및 방화벽이나 회사 네트워크 정책으로 Docker Hub 접근이 차단 되었을 가능성이 있어요 !

 

[2] Docker Hub Rate Limit 문제

Docker Hub에서 익명 사용자의 경우 이미지 다운로드에 제한이 있어요

 

[3] Docker 설정 문제

Docker 데몬이 제대로 실행되지 않고 있을 수도 있어요 ! 가장 유력한 후보에요 !

아래 디버깅 과정을 통해 하나씩 체크해 보시는걸 추천드려요 !

 

1단계: Docker 상태 확인

$ docker version

$ sudo systemctl status docker

2단계: Docker Hub 로그인

Docker Hub 계정으로 로그인하면 Rate Limit가 문제 였을 경우 해결할 수 있어요 :)

$ docker login

 

3단계: 수동으로 이미지 다운로드 테스트

$ docker pull mysql

$ docker pull redis

 

4단계: 특정 태그 명시해보기

my-db:

image: mysql:8.0 # 특정 버전 명시

my-cache-server:

image: redis:7.0 # 특정 버전 명시

위 디버깅 과정을 통해 하나씩 차근차근 체크해 보세요 :)

그래두 해결이 안되시면 오류 메시지와 로그들을 추가로 알려주시면

더 구체적으로 디버깅 도와드리겠습니다 ~~

늘 파이팅입니다 !

임다정님의 프로필 이미지
임다정
질문자

혹시 aws ec2에 배포를 하려면 compose.yml을 ec2에 작성을 하잖아요 그럼 스프링부트에서 로컬에서 사용했던 compose.yml은 삭제하고 이미지로 빌드해야하나요?

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

결론부터 말씀드리면, 로컬에서 쓰던 compose.yml은 삭제할 필요 없어요 !

EC2에서 사용하는 compose.yml은 EC2에서 컨테이너를 실행시키기 위한 목적이고, 로컬에서 작성한 compose.yml은 로컬에서 테스트하거나 GitHub에 올리기 위한 목적이기 때문이에요 ~

또 궁금한 점 있으면 편하게 질문 주세요 :)

임다정님의 프로필 이미지
임다정

작성한 질문수

질문하기