-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MySQL 컨테이너 시작 후 api 서버가 시작되도록 설정 #409
Conversation
✅ Deploy Preview for biseo-preview ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
"prod": "prisma migrate deploy && node dist/index.js", | ||
"db": "docker compose -f docker-compose.dev.yml", | ||
"typecheck": "prisma generate && tsc --noEmit", | ||
"typegen": "prisma generate", | ||
"migrate": "pnpm db up -d && prisma migrate dev", | ||
"studio": "pnpm db up -d && prisma studio", | ||
"migrate:dev": "pnpm db up --wait && prisma migrate dev", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
--wait 옵션을 설정해 MySQL 컨테이너의 healthcheck 조건이 만족될 때까지 다음 커맨드의 실행을 지연시킵니다.
https://docs.docker.com/engine/reference/commandline/compose_up/
.github/pull_request_template.md
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍
healthcheck: | ||
test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD $$MYSQL_DATABASE -e 'select 1'" | ||
start_period: 0s | ||
interval: 1s | ||
retries: 3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이로써 디스크 용량 부족 등으로 DB가 죽게 된다면 그 시점도 기록할 수 있습니당
요약 *
It fixes #407, resolves #408
MySQL 컨테이너가 시작된 이후 실제로 tcp 연결을 받기 시작할 때까지 수 초의 시간이 소요되는데, 그 사이에 api 서버의 Prisma ORM이 데이터베이스와 연결을 시도하면 연결 실패 오류가 발생합니다. 이를 개선하기 위해 두 가지 해결 방법을 도입하였습니다.
배포용 docker compose 파일에서depends_on
조건 강화하기: Docker compose의 api 서버 명세에 "condition: service_completed_successfully" 조건을 추가하여, MySQL 컨테이너가 연결을 수락하기 시작한 시점에 api 서버가 시작될 수 있게 개선합니다.docker compose up
시--wait
옵션 추가하기: MySQL 컨테이너가 연결을 수락하기 시작한 시점까지 docker compose up 명령어가 종료되지 않도록 개선합니다.PR 템플릿을 추가하고, 커밋 메시지 길이 제한을 60자로 늘립니다.
스크린샷
db 컨테이너의 상태가 healthy가 되어야 해당 컨테이너에 의존하는 컨테이너(api, web)이 시작됩니다.
히히 페라리 예쁘죠이후 Task *