안녕하세요,
제목에 적힌 대로입니다. discourse-doctor는 호스트 머신에서 실행 중인 메일 서버에 외부 및 인터넷 접근 인터페이스(localhost는 제외)를 통해 연결되지만, discourse 자체는 연결되지 않습니다.
discourse가 시도한 내용은 Rails production 로그나 메일 서버 로그 어디에도 기록되지 않습니다. Docker 인터페이스에서 패킷 스니퍼를 실행해 보았지만 메일 트래픽이 전혀 보이지 않습니다.
반면, discourse-doctor는 예상대로 메일 서버에 로그 항목을 생성하며, 메일 클라이언트에서 해당 이메일을 읽을 수 있습니다.
아래 설정으로 Docker 컨테이너를 여러 번 재구축해 보았습니다:
## 이것은 올인원, 스탠드얼론 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/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:
- "127.0.0.1:1234:80" # http
### - "127.0.0.1:1235:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## db_shared_buffers는 총 메모리의 최대 25%로 설정하세요.
## bootstrap이 감지된 RAM에 따라 자동으로 설정하거나, 직접 덮어쓸 수 있습니다
db_shared_buffers: "256MB"
## 정렬 성능을 향상시킬 수 있지만, 연결당 메모리 사용량이 증가합니다
#db_work_mem: "40MB"
## 이 컨테이너가 어떤 Git 리비전을 사용해야 합니까? (기본값: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## 동시 웹 요청을 얼마나 지원할 수 있습니까? 메모리와 CPU 코어 수에 따라 다릅니다.
## bootstrap이 감지된 CPU에 따라 자동으로 설정하거나, 직접 덮어쓸 수 있습니다
UNICORN_WORKERS: 4
## TODO: 이 Discourse 인스턴스가 응답할 도메인 이름
## 필수입니다. Discourse는 IP 주소만으로는 작동하지 않습니다.
DISCOURSE_HOSTNAME: example.com
## 컨테이너가 위에서 지정한 도메인 이름(-h 옵션)과 동일한
## 호스트네임으로 시작되도록 하려면 주석을 해제하세요 (기본값 "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: 초기 가입 시 관리자 및 개발자로 설정될 쉼표로 구분된 이메일 목록
## 예: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'me@another.com'
## TODO: 새 계정을 검증하고 알림을 보내는 데 사용되는 SMTP 메일 서버
# SMTP 주소, 사용자 이름, 비밀번호는 필수입니다
# 경고: SMTP 비밀번호에 '#' 문자가 있으면 문제가 생길 수 있습니다!
DISCOURSE_SMTP_ADDRESS: submission.example.com # A 레코드는 작동하지만 CNAME은 작동하지 않습니다
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: somedumbuser
DISCOURSE_SMTP_PASSWORD: somedumbpass
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (선택 사항, 기본값 true)
## Lets Encrypt 템플릿을 추가했다면 무료 SSL 인증서를 얻으려면 아래 주석을 해제하세요
LETSENCRYPT_ACCOUNT_EMAIL: ssl@yetanother.com
## 이 Discourse 인스턴스의 http 또는 https CDN 주소 (인출하도록 구성됨)
## 자세한 내용은 https://meta.discourse.org/t/14857을 참조하세요
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## Docker 컨테이너는 상태(stateless)를 유지하지 않으며, 모든 데이터는 /shared에 저장됩니다
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/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'"
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
types {
- exec: echo "End of custom commands"