# DISCOURSE\_MAXMIND\_LICENSE\_KEY 설정이 Docker 이미지/컨테이너 빌드를 중단시킵니다

**URL:** https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564
**Category:** Self-hosting
**Tags:** maxmind
**Created:** [9월 2, 2023, 1:37오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564 "2023-09-02T13:37:59Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![cbreit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cbreit/32/373832_2.png) [@cbreit](https://meta.discourse.org/u/cbreit)
#### Post date: [9월 2, 2023, 1:37오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/1 "2023-09-02T13:37:59Z")

</div>

여러분,

docker 기반 설치 환경에서 `DISCOURSE_MAXMIND_LICENSE_KEY`를 설정하면 이미지 생성 프로세스가 다음과 같은 오류로 중단됩니다:

```plaintext
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)

    filename = File.basename(gz_file.path)
                                    ^^^^^
        from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
        from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
        from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'

```

`DISCOURSE_MAXMIND_LICENSE_KEY`를 비워두면 모든 것이 정상적으로 작동합니다.  
테스트한 버전: `stable` 및 `tests-passed`

Maxmind 라이선스는 정상적으로 작동합니다. 두 URL 모두 .mmdb 파일에 접근할 수 있습니다:

- [https://download.maxmind.com/app/geoip\_download?license\_key=MAXMIND\_KEY&edition\_id=GeoLite2-City&suffix=tar.gz](https://download.maxmind.com/app/geoip_download?license_key=MAXMIND_KEY&edition_id=GeoLite2-City&suffix=tar.gz)

추측이지만 (저는 Ruby 개발자가 아니므로 너그럽게 봐주세요) – 몇 줄 아래에 있는 `FileHelper.download(...)`에서 ‘.mmdb’ 확장자가 문제를 일으키는 것 같습니다:

> <https://github.com/discourse/discourse/blob/38230970ea2f4426b3fdda2a74a168314f27c81a/lib/discourse_ip_info.rb#L14>

위에서 제공한 링크에 ".mmdb"를 추가하면 `Invalid edition ID` 오류가 발생합니다.

이 정보가 문제 해결에 도움이 되길 바랍니다.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [9월 3, 2023, 10:23오전 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/2 "2023-09-03T10:23:18Z")

</div>

안녕하세요, @cbreit 🙂

Maxmind 키 문제로 인해 일부 재빌드가 실패했다는 보고가 몇 건 있었던 것 같습니다:

[Update from 3.0.0.beta16 to 3.1.0.beta2 - #17 by vmsman](https://meta.discourse.org/t/update-from-3-0-0-beta16-to-3-1-0-beta2/257663/17)  
[My Discourse is Down. Certificate Issue? - #27 by JammyDodger](https://meta.discourse.org/t/my-discourse-is-down-certificate-issue/228347/27)

이것이 우리가 문제를 파악하는 데 필요한 추가 정보가 될 수 있습니다. 👍 조사해 주셔서 감사합니다. 🙂

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [9월 3, 2023, 10:27오전 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/4 "2023-09-03T10:27:18Z")

</div>

라이선스 키가 유효하며 올바르게 입력되었는지 확인해 보셨나요?

---

<div class="post-metadata">

### Author: ![cbreit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cbreit/32/373832_2.png) [@cbreit](https://meta.discourse.org/u/cbreit)
#### Post date: [9월 3, 2023, 12:20오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/5 "2023-09-03T12:20:38Z")

</div>

천만에요.  
무엇을 시도해 볼지, 아니면 추가 정보가 필요하신지 알려주세요. 🙂

---

<div class="post-metadata">

### Author: ![cbreit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cbreit/32/373832_2.png) [@cbreit](https://meta.discourse.org/u/cbreit)
#### Post date: [9월 3, 2023, 12:23오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/6 "2023-09-03T12:23:44Z")

</div>

키 ID는 분명히 유효합니다.  
또한 Ansible을 통해 전체 프로세스가 완전히 자동화되어 있으므로, 키도 올바르게 입력되고 있습니다.

같은 키는 플레이북의 다른 위치에서는 문제없이 잘 작동합니다(레이트 리미팅 문제도 없습니다).

URL이 단순히 작동하지 않는 것 같습니다.

---

<div class="post-metadata">

### Author: ![DaVania](https://avatars.discourse-cdn.com/v4/letter/d/a9adbd/32.png) [@DaVania](https://meta.discourse.org/u/DaVania)
#### Post date: [9월 9, 2023, 3:41오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/7 "2023-09-09T15:41:31Z")

</div>

저도 동일한 문제를 겪고 있으며, 라이선스 키를 지우면 재빌드 문제가 마법처럼 사라진다는 것을 확인했습니다.

며칠 동안 이 문제를 파헤쳐 보려고 최선을 다했습니다.

제 추측이 맞을 수도 있지만, 틀릴 수도 있습니다.

빌드 중 mmdb 파일이 누락된 것으로 보이며, 이는 베이스 이미지 안에 해당 파일이 존재하지 않기 때문이거나, 더 가능성이 높은 것은 파일이 로드되기 전에 삭제되거나 심지어 다운로드조차 되지 않기 때문인 것 같습니다. 이로 인해 빌드가 실패하는 것입니다.

생각해보니, mmdb\_download가 호출된다는 것은 코드가 파일을 다운로드하려고 시도하고 있다는 것을 의미합니다.

저는 도커 컨테이너 내부에서 wget을 사용하여 파일을 성공적으로 수동으로 다운로드했으며, 라이선스가 정상적으로 작동하고 있음을 확인했습니다.

---

<div class="post-metadata">

### Author: ![MarcP](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcp/32/160184_2.png) [@MarcP](https://meta.discourse.org/u/MarcP)
#### Post date: [2월 29, 2024, 6:08오전 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/8 "2024-02-29T06:08:04Z")

</div>

여전히 문제가 있다는 점을 다시 한번 알려드립니다. 키를 추가하고 app.yml에서 해당 설정의 주석을 해제했을 때 동일한 문제가 발생했습니다.

---

<div class="post-metadata">

### Author: ![anon36555649](https://avatars.discourse-cdn.com/v4/letter/a/e9a140/32.png) [@anon36555649](https://meta.discourse.org/u/anon36555649)
#### Post date: [3월 1, 2024, 12:39오전 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/9 "2024-03-01T00:39:35Z")

</div>

오늘 main 브랜치에서 업데이트할 때 이 알림이 표시되었습니다:

```plaintext

Downloading MaxMindDB... MaxMind IP database updates require a license Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com MaxMind IP database updates require a license Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com

```

하지만 저는 이 라이선스 키를 설정한 적이 없으며, 어떻게 통합해야 하는지我也不知道합니다.

업데이트는 완료되었기 때문에 문제가 없는 것 같지만, 경미한 오류일 수도 있습니다.

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [3월 1, 2024, 4:30오전 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/10 "2024-03-01T04:30:46Z")

</div>

maxmind 키가 없으면 그런 일이 발생하는 게 정상인 것 같습니다.

---

<div class="post-metadata">

### Author: ![Flow](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/flow/32/105280_2.png) [@Flow](https://meta.discourse.org/u/Flow)
#### Post date: [5월 9, 2024, 12:24오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/11 "2024-05-09T12:24:17Z")

</div>

저희도 같은 문제를 겪고 있습니다. ~~`DISCOURSE_MAXMIND_ACCOUNT_ID`를 환경 변수에 추가하니 저의 경우 해결되었습니다.~~

말씀을 취소합니다. 처음에는 컨테이너가 성공적으로 빌드된 줄 알았는데, 실제로는 그렇지 않았습니다.

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [5월 9, 2024, 1:01오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/12 "2024-05-09T13:01:59Z")

</div>

1. 케이크데이 축하드립니다!
2. AFAIK, 이 문제는 수정되었습니다. (모든 가능성을 고려하여) 키와 계정 ID가 올바른지 확인해 주실 수 있을까요?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [5월 9, 2024, 1:36오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/13 "2024-05-09T13:36:28Z")

</div>

최근에 재빌드(rebuild)를 하셨나요? 어떤 오류가 발생하나요?

---

<div class="post-metadata">

### Author: ![Flow](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/flow/32/105280_2.png) [@Flow](https://meta.discourse.org/u/Flow)
#### Post date: [5월 9, 2024, 2:30오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/14 "2024-05-09T14:30:19Z")

</div>

네, 오늘이었어요. OP가 올린 그 에러요.

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [5월 9, 2024, 5:44오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/15 "2024-05-09T17:44:11Z")

</div>

현재 보고 계신 정확한 오류를 게시해 주시겠어요? 지난 24시간 동안 관련 변경 사항이 병합되었기 때문에, `tests-passed` 브랜치를 사용 중이라면 OP(원래 포스터)와는 약간 다른 문제를 겪고 계실 수 있다고 의심됩니다:

> <https://github.com/discourse/discourse/commit/7079698cdfb6f0cd73cdfd305b15350634fcd56a>
>
> This commit switches \`DiscourseIpInfo.mmdb\_download\` to use the
> permalinks supp…lied by MaxMind to download the MaxMind databases as
> specified in
> https://dev.maxmind.com/geoip/updating-databases#directly-downloading-databases
> which states:
> 
> \`\`\`
> To directly download databases, follow these steps:
> 
> 1. In the "Download Links" column, click "Get Permalink(s)" for the desired database.
> 2. Copy the permalink(s) provided in the modal window.
> 3. Provide your account ID and your license key using Basic Authentication to authenticate.
> \`\`\`
> 
> Previously we are downloading from \`https://download.maxmind.com/app/geoip\_download\` but this is not
> documented anyway on MaxMind's docs so this URL can in theory break
> in the future without warning. Therefore, we are taking a proactive
> approach to download the databases from MaxMind the recommended way
> instead of relying on a hidden URL. This old way of downloading the
> databases with only a license key will be deprecated in 3.3 and be
> removed in 3.4.

---

<div class="post-metadata">

### Author: ![RBoy](https://avatars.discourse-cdn.com/v4/letter/r/2bfe46/32.png) [@RBoy](https://meta.discourse.org/u/RBoy)
#### Post date: [5월 15, 2024, 7:45오전 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/16 "2024-05-15T07:45:47Z")

</div>

[여기](https://meta.discourse.org/t/upgrade-discourse-fails-from-3-3-0-beta1-to-beta2-via-admin-panel/308038/3?u=rboy)에서 계속 진행 중인 변환 작업입니다.

계정 ID를 포함하도록 `app.yml`을 업데이트했습니다.

이제 다시 빌드(`tests-passed`)할 때 오류가 발생합니다:

```plaintext
****************************************************************************************************
MaxMindDB (GeoLite2-City) 다운로드 실패: 400 Error
****************************************************************************************************

```

```plaintext
Message

MaxMindDB (GeoLite2-City) 다운로드 실패: 400 Error

Backtrace

/var/www/discourse/lib/tasks/maxminddb.rake:83:in `rescue in block (2 levels) in <main>'
/var/www/discourse/lib/tasks/maxminddb.rake:70:in `block (2 levels) in <main>'

```

이것이 어떤 문제일 수 있는지 아이디어가 있으신가요?

---

<div class="post-metadata">

### Author: ![RBoy](https://avatars.discourse-cdn.com/v4/letter/r/2bfe46/32.png) [@RBoy](https://meta.discourse.org/u/RBoy)
#### Post date: [5월 15, 2024, 8:00오전 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/17 "2024-05-15T08:00:12Z")

</div>

로그에서 이것도 확인됩니다

```plaintext
Message

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb

Backtrace

/var/www/discourse/lib/discourse_ip_info.rb:88:in `rescue in mmdb_load'
/var/www/discourse/lib/discourse_ip_info.rb:84:in `mmdb_load'
/var/www/discourse/lib/discourse_ip_info.rb:14:in `open_db'
/var/www/discourse/lib/discourse_ip_info.rb:10:in `initialize'
/usr/local/lib/ruby/3.2.0/singleton.rb:127:in `new'
/usr/local/lib/ruby/3.2.0/singleton.rb:127:in `block in instance'
/usr/local/lib/ruby/3.2.0/singleton.rb:125:in `synchronize'
/usr/local/lib/ruby/3.2.0/singleton.rb:125:in `instance'
/var/www/discourse/lib/discourse_ip_info.rb:175:in `get'
/var/www/discourse/app/serializers/concerns/user_auth_tokens_mixin.rb:13:in `location'
(eval):5:in `_fast_attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
activerecord-7.0.8.1/lib/active_record/relation/delegation.rb:88:in `each'
activerecord-7.0.8.1/lib/active_record/relation/delegation.rb:88:in `each'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:73:in `serializable_array'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:53:in `as_json'
activesupport-7.0.8.1/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-7.0.8.1/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-7.0.8.1/lib/active_support/core_ext/object/json.rb:42:in `to_json'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:331:in `to_json'
multi_json-1.15.0/lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json-1.15.0/lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json-1.15.0/lib/multi_json/adapter.rb:25:in `dump'
multi_json-1.15.0/lib/multi_json.rb:139:in `dump'
/var/www/discourse/app/controllers/application_controller.rb:554:in `render_json_dump'
/var/www/discourse/app/controllers/users_controller.rb:156:in `block (2 levels) in show'
actionpack-7.0.8.1/lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
/var/www/discourse/app/controllers/users_controller.rb:149:in `show'
actionpack-7.0.8.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-7.0.8.1/lib/abstract_controller/base.rb:215:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/rendering.rb:165:in `process_action'
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:423:in `block in with_resolved_locale'
i18n-1.14.5/lib/i18n.rb:351:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:423:in `with_resolved_locale'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/rescue.rb:23:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `block in instrument'
activesupport-7.0.8.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `instrument'
actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-7.0.8.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-7.0.8.1/lib/abstract_controller/base.rb:151:in `process'
actionview-7.0.8.1/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-3.3.1/lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method'
actionpack-7.0.8.1/lib/action_controller/metal.rb:188:in `dispatch'
actionpack-7.0.8.1/lib/action_controller/metal.rb:251:in `dispatch'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:852:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
rack-2.2.9/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.9/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.9/lib/rack/head.rb:12:in `call'
actionpack-7.0.8.1/lib/action_dispatch/http/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:393:in `call'
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in `call'
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in `call'
rack-2.2.9/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.9/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/show_exceptions.rb:29:in `call'
logster-2.19.1/lib/logster/middleware/reporter.rb:40:in `call'
railties-7.0.8.1/lib/rails/rack/logger.rb:40:in `call_app'
railties-7.0.8.1/lib/rails/rack/logger.rb:27:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:24:in `call'
rack-2.2.9/lib/rack/method_override.rb:24:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.9/lib/rack/sendfile.rb:110:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler-3.3.1/lib/mini_profiler.rb:191:in `call'
message_bus-4.3.8/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:277:in `call'
railties-7.0.8.1/lib/rails/engine.rb:530:in `call'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `public_send'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.9/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.9/lib/rack/urlmap.rb:58:in `each'
rack-2.2.9/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

```

```plaintext
Message

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb

Backtrace

/var/www/discourse/lib/discourse_ip_info.rb:88:in `rescue in mmdb_load'
/var/www/discourse/lib/discourse_ip_info.rb:84:in `mmdb_load'
/var/www/discourse/lib/discourse_ip_info.rb:15:in `open_db'
/var/www/discourse/lib/discourse_ip_info.rb:10:in `initialize'
/usr/local/lib/ruby/3.2.0/singleton.rb:127:in `new'
/usr/local/lib/ruby/3.2.0/singleton.rb:127:in `block in instance'
/usr/local/lib/ruby/3.2.0/singleton.rb:125:in `synchronize'
/usr/local/lib/ruby/3.2.0/singleton.rb:125:in `instance'
/var/www/discourse/lib/discourse_ip_info.rb:175:in `get'
/var/www/discourse/app/serializers/concerns/user_auth_tokens_mixin.rb:13:in `location'
(eval):5:in `_fast_attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
activerecord-7.0.8.1/lib/active_record/relation/delegation.rb:88:in `each'
activerecord-7.0.8.1/lib/active_record/relation/delegation.rb:88:in `each'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:73:in `serializable_array'
active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:53:in `as_json'
activesupport-7.0.8.1/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-7.0.8.1/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-7.0.8.1/lib/active_support/core_ext/object/json.rb:42:in `to_json'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:331:in `to_json'
multi_json-1.15.0/lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json-1.15.0/lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json-1.15.0/lib/multi_json/adapter.rb:25:in `dump'
multi_json-1.15.0/lib/multi_json.rb:139:in `dump'
/var/www/discourse/app/controllers/application_controller.rb:554:in `render_json_dump'
/var/www/discourse/app/controllers/users_controller.rb:156:in `block (2 levels) in show'
actionpack-7.0.8.1/lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
/var/www/discourse/app/controllers/users_controller.rb:149:in `show'
actionpack-7.0.8.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-7.0.8.1/lib/abstract_controller/base.rb:215:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/rendering.rb:165:in `process_action'
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:423:in `block in with_resolved_locale'
i18n-1.14.5/lib/i18n.rb:351:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:423:in `with_resolved_locale'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/rescue.rb:23:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `block in instrument'
activesupport-7.0.8.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `instrument'
actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-7.0.8.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-7.0.8.1/lib/abstract_controller/base.rb:151:in `process'
actionview-7.0.8.1/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-3.3.1/lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method'
actionpack-7.0.8.1/lib/action_controller/metal.rb:188:in `dispatch'
actionpack-7.0.8.1/lib/action_controller/metal.rb:251:in `dispatch'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:852:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
rack-2.2.9/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.9/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.9/lib/rack/head.rb:12:in `call'
actionpack-7.0.8.1/lib/action_dispatch/http/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:393:in `call'
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in `call'
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in `call'
rack-2.2.9/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.9/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/show_exceptions.rb:29:in `call'
logster-2.19.1/lib/logster/middleware/reporter.rb:40:in `call'
railties-7.0.8.1/lib/rails/rack/logger.rb:40:in `call_app'
railties-7.0.8.1/lib/rails/rack/logger.rb:27:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:24:in `call'
rack-2.2.9/lib/rack/method_override.rb:24:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.9/lib/rack/sendfile.rb:110:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler-3.3.1/lib/mini_profiler.rb:191:in `call'
message_bus-4.3.8/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:277:in `call'
railties-7.0.8.1/lib/rails/engine.rb:530:in `call'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `public_send'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.9/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.9/lib/rack/urlmap.rb:58:in `each'
rack-2.2.9/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

```

실행 중인 discourse 버전: [Commits · discourse/discourse · GitHub](https://github.com/discourse/discourse/commits/777b8f6d51b7a5a080f52f4fa0a1d7e487735e51)

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [5월 15, 2024, 6:27오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/18 "2024-05-15T18:27:03Z")

</div>

저도 자체 호스팅 인스턴스에서 이 문제를 직접 겪었습니다. 아래는 업그레이드 로그의 일부입니다.

```plaintext
Stopping 2 Unicorn worker(s), to free up memory
Stopping job queue to reclaim memory, master pid is 2132120
$ cd /var/www/discourse/plugins/docker_manager && git fetch --tags --prune-tags --prune --force
$ cd /var/www/discourse/plugins/docker_manager && git reset --hard HEAD@{upstream}
HEAD is now at dec486d Update translations (#213)
$ bundle install --retry 3 --jobs 4
Bundle complete! 137 Gemfile dependencies, 170 gems now installed.
Gems in the groups 'development' and 'test' were not installed.
Bundled gems are installed into `./vendor/bundle`
[...]
 - dist/javascripts/squoosh/squoosh_resize.js: 4.53 kB (1.29 kB gzipped)
Done in 89.56s.
Purging temp files
Bundling assets
Downloading MaxMindDB...
#<Thread:0x00007fe9902157b0 /var/www/discourse/lib/tasks/maxminddb.rake:62 run> terminated with exception (report_on_exception is true):
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)

    filename = File.basename(gz_file.path)
                                    ^^^^^
	from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
Skipping: break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js already compressed
Skipping: service-worker-fadf8e4b5a6844dadaf6c3f1fb335fdd9dcb030f2bc22fcb96537679dfd2fa2d.js already compressed
Compressing: locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js > /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js.gz
Compressing Javascript and Generating Source Maps
[...]
precompile target: color_definitions Light (Light)
precompile target: color_definitions Light (air-light)
precompile target: color_definitions Light (air-dark)
precompile target: color_definitions Light (Base)
precompile target: desktop_theme Dark
precompile target: mobile_theme Dark
precompile target: color_definitions Dark (Simple Dark)
precompile target: color_definitions Dark (air-light)
precompile target: color_definitions Dark (air-dark)
precompile target: color_definitions Dark (Base)
Done compiling CSS: 2024-05-15 18:13:29 UTC
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)

    filename = File.basename(gz_file.path)
                                    ^^^^^
	from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
	from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:111:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands.rb:18:in `<main>'
<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Spinning up 2 Unicorn worker(s) that were stopped initially

```

---

<div class="post-metadata">

### Author: ![mentalstring](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mentalstring/32/168934_2.png) [@mentalstring](https://meta.discourse.org/u/mentalstring)
#### Post date: [5월 15, 2024, 6:31오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/21 "2024-05-15T18:31:50Z")

</div>

오래전부터 동일한 문제를 겪어 왔고, 재구성을 위해 MaxMind 통합을 비활성화해야 했습니다.

이 문제는 [테스트-패스드(tests-passed) 브랜치에서는 수정되었을 수 있다](https://meta.discourse.org/t/fail-to-download-maxmind-db-with-valid-key-can-download-the-db-from-inside-container/300590/4?u=mentalstring)고 생각했지만, 저는 최신 안정판(3.2.2)을 사용 중이므로 기다려야 한다고 생각했습니다. 그러나 [3.3.0에서도 동일한 문제가 보고된 사례](https://meta.discourse.org/t/upgrade-discourse-fails-from-3-3-0-beta1-to-beta2-via-admin-panel/308038)가 있으므로, 이 문제에 대해 좀 더 세밀한 조사가 필요할 수 있습니다.

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [5월 15, 2024, 6:47오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/22 "2024-05-15T18:47:32Z")

</div>

다음과 같이 시도해 보았는데, 작동하는 것 같습니다:

1. 서버에 SSH로 접속했습니다.
2. `app.yml` 파일을 편집하여 `DISCOURSE_MAXMIND_ACCOUNT_ID: REDACTED`를 추가했습니다.
3. `./launcher rebuild app` 명령을 실행했습니다.

리빌드가 오류 없이 완료되었습니다. 사이트는 정상적으로 작동 중입니다. 불행히도 `discourse_docker`에 새로운 커밋이 푸시될 때까지 관리 대시보드를 통해 업데이트를 테스트하여 문제가 해결되었는지 확인할 수 없습니다.

수정: _리빌드_는 성공적으로 완료되었지만, MaxMind는 작동하지 않는 것으로 보입니다.

---

<div class="post-metadata">

### Author: ![mentalstring](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mentalstring/32/168934_2.png) [@mentalstring](https://meta.discourse.org/u/mentalstring)
#### Post date: [5월 15, 2024, 8:50오후 UTC](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564/23 "2024-05-15T20:50:56Z")

</div>

저도 시도해 봤지만, DISCOURSE\_MAXMIND\_ACCOUNT\_ID를 포함해도 내 경우에는 아무런 차이가 없었습니다. 최신 안정판(latest stable)을 사용해도 재빌드(rebuild)가 여전히 완료되지 않습니다. DISCOURSE\_MAXMIND\_LICENSE\_KEY를 건너뛰는 것만 효과가 있는 것 같습니다.

> **로그**
>
> ```plaintext
> ...
> Done compiling CSS: 2024-05-15 20:34:22 UTC
> /var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)
> 
> filename = File.basename(gz_file.path)
> ^^^^^
> from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
> from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
> from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
> I, [2024-05-15T20:34:22.860678 #1] INFO -- : Checking 'Category Icons' for 'default'... up to date
> Checking 'discourse-profile-custom-link' for 'default'... up to date
> Downloading MaxMindDB...
> Compressing Javascript and Generating Source Maps
> 
> FAILED
> --------------------
> Pups::ExecError: cd /var/www/discourse && su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1399 exit 1>
> Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
> exec failed with the params {"cd"=>"$home", "tag"=>"precompile", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile'"]}
> bootstrap failed with exit code 1
> **FAILED TO BOOTSTRAP** please scroll up and look for earlier error messages, there may be more than one.
> ./discourse-doctor may help diagnose the problem.
> 
> ```

[다음 페이지](https://meta.discourse.org/t/setting-discourse-maxmind-license-key-breaks-docker-image-container-build/277564.md?page=2)
