docker 마지막 실습(app(flask) + mysql) 연동 과정
#compose.yml 파일 부분 수정
depends_on:
-dbcompose를 실행하는 과정에서 db가 app보다 먼저 실행되긴 하지만 db 커넥션이 준비되기전에 app이 실행되어 오류가 발생합니다.
depends_on:
db:
condition: service_healthydb의 healthcheck 결과를 실제로 체크해서, healthycheck가 끝날때까지 기다렸다가 app이 실행되기에 오류를 해결할 수 있었습니다.
수강생분들 참고하시면 좋을꺼 같습니다.
좋은 강의 감사드립니다. 화이팅입니다.!!
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 강희성님.
Docker Compose에서 depends_on을 사용하여 서비스 간의 실행 순서를 조절하는 것은 매우 일반적인 문제점이죠. 특히 데이터베이스와 같은 서비스는 처음 시작될 때 준비 시간이 필요한 경우가 많기 때문에, healthcheck 옵션을 사용하여 다른 서비스가 데이터베이스가 준비된 후에 실행되도록 설정하는 것은 좋은 방법입니다.
Docker Compose에서 depends_on과 healthcheck 사용
depends_on은 서비스가 시작되는 순서를 지정할 수 있게 해주지만, 실제로 서비스 간의 연결이 가능한지를 확인하지는 않습니다. 서비스가 “준비”된 시점이라고 하더라도 네트워크 연결이 가능하지 않을 수도 있기 때문입니다. 따라서 데이터베이스와 같은 서비스에 대해서는 healthcheck를 추가하여 서비스의 상태를 확인하는 것이 중요합니다.
예를 들어, MySQL을 사용하는 경우 다음과 같이 설정할 수 있습니다:
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 3
app:
image: your-flask-app
depends_on:
db:
condition: service_healthy
이와 같이 설정하면 MySQL 컨테이너가 “healthy” 상태가 될 때까지 Flask 앱 컨테이너가 기다리게 됩니다.
이와 관련된 유용한 게시물을 다음 URL에서 확인하여 참고할 수 있습니다:
- Docker Compose에서 depends_on와 healthcheck 사용하기
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
트랜잭션 내 Redis I/O 에 대한 궁금한점
1
11
1
Deployment 업데이트-2 해결 방식 문의
1
13
1
경쟁상태
0
44
1
stmt
0
39
1
실행 통계2 explain analyze 조인 쿼리
0
37
1
virtualbox 설치시
1
39
1
실행중인 컨테이너를 모두 삭제하는 방법(윈도우버전)
0
65
2
winpty docker 설정
0
56
2
vs code설치했는데도, easy docker 파일 열기에서 vs code 아이콘은 안보여요
0
41
1
[해결됨]마지막 강의 내용 수정 화면이 기능을 못하네요.
0
45
1
[해결됨]부분적으로 화면 이동이 안되는 부분이 있습니다.
0
83
6
68강 문제 풀이
0
42
1
현대 쿼리 복잡성에 관한 질문
0
82
3
key_length 가 사용되는곳
0
43
1
낙관적락 질문있습니다.
0
44
1
댓글순서부여방식
0
44
1
공통 코드 VS Enum 클래스
1
46
1
movablePageCount와 pageSize 상수
0
36
1
JPA와 네이티브 쿼리
0
42
1
aws 계정 생성 질문
1
64
1
코드자료 활용 깃
1
74
2
apache spark -> airflow
0
210
2
mysql 포트 사용에 관하여
1
170
2
저만 안 되는 것인가요? ㅠㅠ
0
327
2





