LotusJeff
(Jeff Cocking)
1
./launcher rebuild app を実行しましたが、システム関連ファイルに変更はありません。現在、Discourse の点滅するドットで停止しています。
以下の点を確認しました。
docker ps には Discourse アプリイメージが表示されています(正常に見えます)。
top コマンドでアクティビティが表示されています(正常に見えます)。
- Sidekiq のステータスを確認できます(正常に見えます)。
再度アプリを再構築しました。
同じ結果です。
セーフモードを使用してみました。すべてオフにしました。変更はありません。点滅するドットの画面がまだ表示されます。
ソースコードのすべての行を確認しました。4つの JavaScript ファイルが見つかりません。それらは次のとおりです。
多数の JavaScript ファイルが不足しています。これらは最初に見つかったものです。
初期レビュー:
- CDN 配信経由でファイルが利用できません。
- CDN は S3 バケットからプルします。
- ファイルは、他のすべての資産が保存されている S3 バケットにありません。
再構築の結果を見ると、次のことがわかります。
- 4つのファイルが作成され、
public/assets/ に .js ファイル拡張子で書き込まれました。
- 4つのファイルが圧縮され、
.br.js ファイル拡張子で保存されました。
サーバーを確認します。
- 4つの
.js ファイルすべてがサーバーで利用可能です。
.br.js ファイルはサーバーで利用できません。
.br.js ファイルは S3 バケットにありません。
再構築の結果を確認すると、再構築の一部として after_assets_precompile アクティビティが発生していないようです。手動で rake s3:upload_assets を実行すると、資産が S3 に移行され、すべて正常に機能します。
以下の点を確認しました。
- YAML ファイルは適切なフォーマットのチェックに合格しています。
再構築の一部として after_assets_precompile が処理されない理由を判断するために、他にどのような点を確認できますか?
注:実行中のバージョンは 3.4.0.beta4-dev - 6a50b3d4b4 です。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2
アセットをアップロードするスタンザを追加しましたか?
アップロード用のS3互換オブジェクトストレージプロバイダーを設定する
そして、そのrakeタスクはそこで見つけることができ、コンテナ内から実行できます(再構築の時間を節約するため)。その後、ymlファイルを編集したら再構築を行います。
LotusJeff
(Jeff Cocking)
3
S3 は 43 日間サイトで稼働しています。Rake コマンドは S3 のインストールの一部としてそこに配置されました。
サイトは少なくとも 30 回再構築されています。途中で追加のプラグインやコンポーネントを追加しました。これは、.js ファイルが S3 バケットに追加され、そこに格納されたことを示唆しています。
S3 コンポーネントは正常に機能していました。ファイルが S3 に移行されなかったのは今回が初めてです。
ファイルが移動されなかった理由を理解するために、何を調査できますか?
after_assets_precompile が実行されない原因として、何か考えられることはありますか?
「いいね!」 1
LotusJeff
(Jeff Cocking)
4
助けてください!
再構築時に、プロセスが app.yml ファイルの次のセクションをスキップします。
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
再構築直後に、次のコマンドを手動で実行できます。
./launcher enter app
rake s3:upload_assets
rake s3:expire_missing_assets
コマンドを実行すると、必要なファイルが S3 に処理されます。
after_assets_precompile コードに echo コマンドを追加しました。
cmd:
- echo "Beginning of precompile commands"
- sudo -E -u discourse bundle exec rake s3:upload_
echo ステートメントは再構築の出力に表示されません。
再構築ステップは、app.yml ファイルのこのセクションの前後のステップを処理します。すべてのプラグインとカスタムコマンドを処理します。
解決のために次の手順を実行しました。
- すべてのプラグインを削除しました。
- すべてのコンポーネントを無効にしました。
- すべての discourse ログファイルをレビューしました。エラーは示されていませんでした。
- 基本システムログファイルをレビューしました。エラーは示されていませんでした。
再構築プロセスがこのセクションをスキップする理由について、何か手がかりはありますか?
LotusJeff
(Jeff Cocking)
5
テストとして、after_assets_precompile コマンドをカスタムコマンドセクションに移動しました。
run:
- exec: echo "Beginning of custom commands"
## 初回登録の「From」メールアドレスを設定したい場合は、コメントを解除して変更してください。
## 最初のサインアップメールを取得した後、行を再コメントしてください。一度だけ実行する必要があります。
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## 作業中にウェブサイトにパスワード保護をかけるコマンド。本番環境では削除してください。
- exec:
cd: $home
cmd:
- echo "Beginning of precompile commands"
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
- exec: echo "End of custom commands"
コマンドは問題なく動作しました。これにより、環境アクセスやセキュリティの問題が除外されます。
ランチャープロセスは、再構築中に after_assets_precompile コードをスキップしています。
何か手がかりはありますか?
「いいね!」 1
Jagster
(Jakke Lehtonen)
6
さっぱりわかりませんが、4時間ほど前に再構築したときは問題ありませんでした。
「いいね!」 1
Ed_S
(Ed S)
7
YAML ファイルに空白またはインデントのエラーがある可能性があります。バリデーターを検索して確認してください: [YAMLを検証]
これはトップレベルのキーではなく、hooks の下にあるべきです。例:
hooks:
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
「いいね!」 3
LotusJeff
(Jeff Cocking)
9
それは最初の投稿に記載されていました。app.yml は適切なインデントのために検証されました。
「いいね!」 1
LotusJeff
(Jeff Cocking)
10
@supermathie - あなたは素晴らしい視力を持っていて、素晴らしいです。コードが2つのスペースでインデントされていなかったことに気づきました。しかも、広範囲ではなく、単一のスニペットから。ありがとうございます。
2つのスペースを追加したところ、問題が解決しました。
以前、app.ymlをymlチェッカーに通しました。テストツールは、ファイルが構造的に健全であると教えてくれました。しかし、機能的に間違っているとは教えてくれませんでした。
正しいコードスニペットは次のようになります。
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-adplugin
- git clone https://github.com/discourse/discourse-affiliate
- git clone https://github.com/discourse/discourse-subscriptions
- git clone https://github.com/discourse/discourse-yearly-review
- git clone https://github.com/discourse/discourse-whos-online
- git clone https://github.com/discourse/discourse-data-explorer
# set internal files for cdn
after_assets_precompile:
- exec:
cd: $home
cmd:
- echo "Beginning of precompile commands"
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
app.ymlファイルを文書化するために。トップレベルのキーは次のとおりです。
- templates:
- params:
- env:
- volumes:
- hooks:
- run:
それ以外はすべてインデントする必要があります。
最も単純なエラーが最もイライラする可能性があります。2つのスペースのために私の人生の6時間が失われました。
私の王国を2つのスペースのために。
「いいね!」 2
pfaffman
(Jay Pfaffman)
11
これはいつも起こる。
もう一つのお気に入りは、間違ったファイルを編集すること、または正しいファイルを間違ったコンピューターで編集することだ。
「いいね!」 2
system
(system)
クローズされました:
12
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.