AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Heroku 배포 오류 해결: 자산 컴파일 및 환경 변수 문제 해결 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

Ruby on Rails 및 Node.js 기반 앱 개발자, Heroku 배포 경험자

핵심 요약

  • 환경 설정 필수: RAILS_ENV=production 설정 및 heroku config:set 명령어 사용
  • 빌드팩 순서 중요: heroku/nodejsheroku/ruby 순서로 추가
  • 로깅 중심 접근: heroku logs --tail로 실시간 로그 확인
  • 자산 문제 해결: rails assets:clean으로 캐시 정리 후 재컴파일

섹션별 세부 요약

1. **실패 원인 분석**

  • 의존성 누락 (예: yarn 미설치)
  • Node/Ruby 버전 불일치
  • 배포 환경 경로 오류

2. **자산 컴파일 실패 해결 방법**

  • 로컬 테스트: RAILS_ENV=production bundle exec rails assets:precompile
  • 빌드팩 추가:

```bash

heroku buildpacks:add --index 1 heroku/nodejs

heroku buildpacks:add --index 2 heroku/ruby

```

  • package.json 스크립트 추가:

```json

"scripts": {"postinstall": "rails assets:precompile"}

```

3. **환경 변수 오류 해결**

  • 변수 설정:

```bash

heroku config:set RAILS_ENV=production SECRET_KEY_BASE=$(rake secret)

heroku config:get SECRET_KEY_BASE # 중복 확인

```

  • 디노 재시작: heroku restart
  • 코드 내 검증:

```ruby

raise "SECRET_KEY_BASE missing!" if ENV["SECRET_KEY_BASE"].nil?

```

4. **클래식 오류 사례**

  • PG::ConnectionBad: heroku run rails db:migrate 실행
  • EACCES: permission denied: RUN chown -R app:app /app 명령어 사용
  • 메모리 제한: heroku config:set NODE_OPTIONS="--max_old_space_size=2048"

5. **디버깅 전략**

  • 로그 분석: heroku logs --tail로 실시간 로그 확인
  • 로컬 재현: RAILS_ENV=production bundle exec rails assets:precompile
  • 스테이징 환경:

```bash

heroku create my-app-staging --remote staging

```

6. **실제 사례 및 해결**

  • CSS 로딩 실패 원인: 자산 컴파일 실패로 인한 정적 캐시 문제
  • 해결: heroku run rails assets:clean으로 캐시 정리

결론

  • 배포 실패 시 로그 확인 → 자산/환경 변수 검증 → 스테이징 환경 활용 순서로 접근
  • RAILS_ENV 설정 누락 및 빌드팩 순서 오류가 주요 원인 → 반드시 검증
  • 예제: heroku run rails assets:clean으로 오래된 캐시 문제 해결
  • 핵심 팁: package.jsonpostinstall 스크립트 추가로 자동 컴파일 적용