バージョン: v2.6.0.beta2
セットアップ: Docker 上で実行中のサブフォルダ /forum/discourse 設定。ホスト側の Apache リバースプロキシは /forum/discourse で動作。
サブフォルダ設定のガイドに従ってインストールを行いました here。インストール自体は正常に完了しました。
しかし、いくつかのリソース URL が正しくプレフィックス付けされておらず、404 エラーが発生しています。例えば、デフォルトのヘッダーロゴの URL は /forum/discourse/images/discourse-logo-sketch.png であるべきですが、Discourse は /images/discourse-logo-sketch.png を使用しています。
コードベースにはあまり詳しくありませんが、この問題は application_logo_url を UrlHelper.absolute() でラップすることで解決できると思います here。
同様の問題を見つけた場合は、このトピックに追記します。これが実際に問題なのか、それとも私の設定ミスなのか、ご教示ください。PR を提出することも喜んで行います。
app.yml
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
expose:
# ホスト側でこれらのポートにリバースプロキシを設定
- "8080:80" # http
- "8443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
db_shared_buffers: "3072MB"
env:
LANG: en_US.UTF-8
UNICORN_WORKERS: 8
DISCOURSE_HOSTNAME: mydomain.com
DISCOURSE_RELATIVE_URL_ROOT: /forum/discourse
DISCOURSE_DEVELOPER_EMAILS: 'info@mydomain.com'
DISCOURSE_SMTP_ADDRESS: mydomain.com
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: user
DISCOURSE_SMTP_PASSWORD: pass
## Docker コンテナはステートレスです。すべてのデータは /shared に保存されます
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## ビルド後に実行する任意のカスタムコマンド
run:
- exec: echo "カスタムコマンドの開始"
## https://meta.discourse.org/t/subfolder-support-with-docker/30507
- exec:
cd: $home
cmd:
- mkdir -p public/forum/discourse
- cd public/forum/discourse && ln -s ../../uploads && ln -s ../../backups
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: proxy_pass http://discourse;
to: |
rewrite ^/(.*)$ /forum/discourse/$1 break;
proxy_pass http://discourse;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: etag off;
to: |
etag off;
location /forum/discourse {
rewrite ^/forum/discourse/?(.*)$ /$1;
}
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_your_original_ip_header
- exec: echo "カスタムコマンドの終了"