Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,8 @@ ORGANIZATION_README.md
.cursor
agent-transcripts
mcps
# 비밀값과 사용자 업로드 파일은 빌드 컨텍스트로 보내지 않는다.
.env
.env.*
!.env.example
uploads
58 changes: 58 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# 로컬 실행용 환경 변수 예시.
#
# docker compose up 은 이 파일 없이도 뜬다(docker-compose.yml 에 로컬 기본값이 있다).
# 아래는 "실제로 연동해 보고 싶은 기능" 이 있을 때만 채운다.
#
# cp .env.example .env 그다음 필요한 줄만 주석을 풀고 값을 넣는다
#
# .env 는 .gitignore 에 들어 있다. 실제 키를 커밋하지 않는다.

# ---------------------------------------------------------------------------
# 카카오 로그인 — developers.kakao.com 앱의 REST API 키 / Client Secret
# 비워 두면 카카오 로그인만 실패하고 나머지는 동작한다.
# ---------------------------------------------------------------------------
# KAKAO_CLIENT_ID=
# KAKAO_CLIENT_SECRET=
# KAKAO_REDIRECT_URI=http://localhost:3000/auth/kakao/callback

# ---------------------------------------------------------------------------
# 이메일 인증번호 발송 — Gmail 이면 "앱 비밀번호" 를 쓴다
# 비워 두면 발송만 실패한다(헬스체크에는 영향 없음).
# ---------------------------------------------------------------------------
# MAIL_USERNAME=
# MAIL_PASSWORD=

# ---------------------------------------------------------------------------
# 공공데이터 동기화 — 시설·유치원·병원·지원금
# 키가 없는 공급자는 동기화를 건너뛴다. 기동에는 영향 없다.
# ---------------------------------------------------------------------------
# DATA_GO_KR_SERVICE_KEY=
# CHILDCARE_PORTAL_KEY=
# KINDERGARTEN_INFO_KEY=
# SEOUL_OPEN_DATA_KEY=
# KAKAO_REST_API_KEY= # 주소 → 좌표 보정. 비우면 KAKAO_CLIENT_ID 를 쓴다

# ---------------------------------------------------------------------------
# 챗봇 — 비워 두면 규칙 기반 응답으로 동작한다
# ---------------------------------------------------------------------------
# ANTHROPIC_API_KEY=
# CHATBOT_MODEL=claude-opus-5

# ---------------------------------------------------------------------------
# 샘플 데이터 — 공공데이터 키 없이 화면을 채워 보고 싶을 때
# 실제 지원 금액이 아니다. 확인이 끝나면 DELETE /api/admin/dev/sample-data 로 지운다.
# ---------------------------------------------------------------------------
# SEED_SAMPLE_DATA=true

# ---------------------------------------------------------------------------
# 포트 — 다른 프로그램과 겹칠 때만 바꾼다
# ---------------------------------------------------------------------------
# APP_PORT=8082
# DB_PORT=3307
# REDIS_PORT=6380

# ---------------------------------------------------------------------------
# 기타 알림
# ---------------------------------------------------------------------------
# OPS_SLACK_WEBHOOK_URL= # 운영 알림. 비우면 로그로만 남긴다
# FCM_CREDENTIALS_LOCATION= # 푸시. 서비스 계정 JSON 경로(file:/...). 비우면 푸시 비활성
6 changes: 4 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,14 @@ WORKDIR /app
COPY --from=builder /app/build/libs/carecode-app.jar app.jar

RUN addgroup --system carecode && adduser --system --ingroup carecode carecode
RUN chown -R carecode:carecode /app
# 업로드 저장소. 이미지에 폴더가 있어야 볼륨을 처음 붙일 때 소유권이 이어진다.
# 없으면 볼륨이 root 소유로 생겨 carecode 사용자가 파일을 쓰지 못한다.
RUN mkdir -p /app/uploads && chown -R carecode:carecode /app
USER carecode

EXPOSE 8082

HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
HEALTHCHECK --interval=30s --timeout=5s --start-period=180s --retries=3 \
CMD wget -qO- http://127.0.0.1:8082/actuator/health | grep -q '"status":"UP"' || exit 1

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
Loading
Loading