작성
·
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
안녕하세요 다정님 ! 마지막 강의까지 잘 따라오셨네요~~
질문 주신 내용에 대해서 답변 드려볼게요 !
"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 해오는 방식이죠 :)
추가로 궁금한 점 있으면 언제든 질문 주세요~ 😄
안녕하세요! 다정님 !
이미지를 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은 삭제하고 이미지로 빌드해야하나요?
결론부터 말씀드리면, 로컬에서 쓰던 compose.yml은 삭제할 필요 없어요 !
EC2에서 사용하는 compose.yml은 EC2에서 컨테이너를 실행시키기 위한 목적이고, 로컬에서 작성한 compose.yml은 로컬에서 테스트하거나 GitHub에 올리기 위한 목적이기 때문이에요 ~
또 궁금한 점 있으면 편하게 질문 주세요 :)
실습을 똑같이 따라했는데 저는 mysql이랑 redis 이미지를 도커허브에서 가져올수없다고 하던데..이유를잘모르겠습니다.