최근 Discourse를 배포하고 있었는데, 문제가 생겨 시작할 수 없었습니다.
에러는 다음과 같습니다:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs $(($(nproc) - 1)) --without test development' failed with return #<Process::Status: pid 1193 exit 15>
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in 'Pups::ExecCommand#spawn'
exec failed with the params {"cd" => "$home", "cmd" => ["echo \"gem 'mysql2'\" >> Gemfile", "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmariadb-dev", "su discourse -c 'bundle config unset deployment'", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs $(($(nproc) - 1)) --without test development'"]}
bootstrap failed with exit code 15
** 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.
7a849a20b51e8b8ff94c6ac3727c393aeb899e9b48b7d2313931232ceb9e6411
설정 파일은 다음과 같습니다:
## 이것은 올인원, 독립형 Discourse Docker 컨테이너 템플릿입니다
##
## 이 파일을 변경한 후에는 반드시 다시 빌드해야 합니다
## /var/discourse/launcher rebuild app
##
## 편집할 때 *매우* 주의하세요!
## YAML 파일은 공백이나 정렬에 대한 실수에 *매우* 민감합니다!
## 필요할 경우 http://www.yamllint.com/ 에서 이 파일을 검증하세요
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/import/mysql-dep.template.yml"
#- "templates/web.ratelimited.template.yml"
## Lets Encrypt(https)를 추가하려면 이 두 줄의 주석을 해제하세요
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## 이 컨테이너는 어떤 TCP/IP 포트를 노출해야 합니까?
## Apache나 nginx와 같은 다른 웹서버와 포트를 공유하려면
## https://meta.discourse.org/t/17247 에서 세부 정보를 확인하세요
expose:
- "8000:80" # http
#- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.chinese"
## db_shared_buffers를 총 메모리의 최대 25%로 설정하세요.
## 감지된 RAM에 따라 bootstrap이 자동으로 설정하거나, 직접 덮어쓸 수 있습니다
#db_shared_buffers: "256MB"
## 정렬 성능을 향상시킬 수 있지만, 연결당 메모리 사용량이 증가합니다
#db_work_mem: "40MB"
## 이 컨테이너는 어떤 Git 리비전을 사용해야 합니까? (기본값: latest)
#version: latest
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## 동시 웹 요청을 몇 개까지 지원할 수 있습니까? 메모리와 CPU 코어 수에 따라 다릅니다.
## 감지된 CPU에 따라 bootstrap이 자동으로 설정하거나, 직접 덮어쓸 수 있습니다
#UNICORN_WORKERS: 3
## TODO: 이 Discourse 인스턴스가 응답할 도메인 이름
## 필수입니다. Discourse는 IP 주소만으로는 작동하지 않습니다.
DISCOURSE_HOSTNAME: "forum.akarinliu.com"
## 컨테이너가 위에서 지정된 도메인 이름(-h 옵션)과 동일한
## 이름으로 시작되도록 하려면 주석을 해제하세요 (기본값 "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: 초기 가입 시 관리자 및 개발자로 지정될 쉼표로 구분된 이메일 목록
## 예시 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: "forum.akarinliu.com"
## TODO: 메일 서버 구성
## (새 계정 인증, 알림, 다이제스트 등에 사용됨)
## 필수: 메일 전송에 사용되는 SMTP 메일 서버의 호스트 이름
DISCOURSE_SMTP_ADDRESS: smtp.exmail.qq.com
## 기본값(25)이 아닌 다른 포트로 설정하려면 주석을 해제하세요
DISCOURSE_SMTP_PORT: 587
## SMTP 제공업체가 인증을 필요로 하는 경우 USER_NAME / PASSWORD가 필요합니다
## 경고: SMTP 비밀번호에 '#'가 포함된 경우 오해의 소지가 있으므로, 문자열 따옴표 안에 있는지 확인하세요. 예:
## DISCOURSE_SMTP_PASSWORD: "#pass#ord"
DISCOURSE_SMTP_USER_NAME: noreply@akarinliu.com
DISCOURSE_SMTP_PASSWORD: "***"
## 연결 시 암시적 TLS를 활성화하려면 주석을 해제하세요. 465 포트를 사용하는 경우 아마도 필요합니다
#DISCOURSE_SMTP_FORCE_TLS: true
## HELO/EHLO 도메인을 설정하려면 주석을 해제하세요. 제공업체에서 요구하는 경우에만 설정하세요
#DISCOURSE_SMTP_DOMAIN: discourse.example.com
## 알림이 발송되는 주소
#DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com
## 서버 인증서 검증을 변경하려면 주석을 해제하세요
#DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: peer # peer|none
## 인증 방식을 덮어쓰려면 주석을 해제하세요
#DISCOURSE_SMTP_AUTHENTICATION: plain # plain|login|cram_md5
# 선택적 이메일 설정 스킵 플래그
#DISCOURSE_SKIP_EMAIL_SETUP: "1" # (선택 사항), 이메일 설정 검증을 건너뛰려면 주석을 해제하세요
## 이 Discourse 인스턴스의 http 또는 https CDN 주소 (추기 위해 구성됨)
## https://meta.discourse.org/t/14857 에서 세부 정보를 확인하세요
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## IP 주소 조회를 위한 maxmind 지리 위치 IP 계정 ID 및 라이선스 키
## https://meta.discourse.org/t/-/173941 에서 세부 정보를 확인하세요
DISCOURSE_MAXMIND_ACCOUNT_ID: 1111
DISCOURSE_MAXMIND_LICENSE_KEY: '***'
## Docker 컨테이너는 상태가 없으며, 모든 데이터는 /shared에 저장됩니다
volumes:
- volume:
host: ./shared
guest: /shared
- volume:
host: ./log/var-log
guest: /var/log
## 플러그인은 여기에 배치합니다
## https://meta.discourse.org/t/19157 에서 세부 정보를 확인하세요
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## 빌드 후 실행할 사용자 지정 명령
run:
- exec: echo "Beginning of custom commands"
## 첫 번째 등록 시 'From' 이메일 주소를 설정하려면 주석을 해제하고 변경하세요:
## 첫 번째 가입 이메일을 받은 후, 해당 줄의 주석을 다시 설정하세요. 한 번만 실행하면 됩니다.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
이렇게 해보고 공유해 주세요 ![]()
네 - 최소 100줄을 붙여넣어 주세요.
서버가 중국에 있다면, 네트워크 문제일 가능성이 높습니다. 로그를 보면 gem 패키지 다운로드 단계에서 멈춰 있는 것으로 보이는데, 걱정하지 마세요. 저도 같은 상황입니다. 최근 며칠간 여러 네트워크 문제로 인해 리팩토링을 진행하지 못하고 있습니다.
아마도 최근 며칠간 중국에서 대학 입시(가오카오)가 진행 중이라 네트워크 차단이 매우 심하기 때문일 것입니다. 이 시기가 지나면 다시 시도해 보거나 프록시를 사용하는 것을 권장합니다.