フォーラムがランチャー再構築アプリでダウンします

こんにちは。

./launcher rebuild app を実行するたびに、フォーラムがダウンします。
エラーを示すスクリーンショットを添付しました。

「いいね!」 1

正しく理解できているなら、エラーメッセージは9行目に問題があると言っています。

このコマンドを入力してみてください。

cat -n containers/app.yml

これにより、ファイルの内容が行番号付きで表示されるので、9行目の構文エラーを確認できます。

出力で言及されている chmod コマンドも実行しておくのが良いでしょう。ただし、エラーとは関係ありません。

「いいね!」 3

nano -l を使うと、正しい行を見つけてすぐに修正できるので、はるかに簡単です :wink:

もしあまり変更していないなら、app.yml の 9 行目は templates: の直前です。余分な空白など、何かおかしなことはありませんか?

しかし、YAML について学んだことは、空白がほぼどこにでも存在し、スペースの欠落、引用符の欠落、または間違った型があると、エラーが間違った場所を指し示すということです。

app.yml を削除して、セットアップをやり直す方が簡単だと思います。

「いいね!」 2

その行を完全に削除しましたが、それでも9行目に構文エラーがあると言われます。

「いいね!」 1

それを削除して再構築するにはどうすればよいですか?

「いいね!」 1

まず、コンテンツがあればバックアップを取ります。その後、以下を実行します。

cd /var/discourse
mv containers/app.yml .
./discourse-setup
「いいね!」 1

それは私のフォーラムデータを削除しますか?投稿やユーザーなど、すべてですか?

「いいね!」 1

いいえ。しかし、だからこそ、最初に完全なバックアップを行ったのです。

ただし、こちらも試すことができます。

「いいね!」 1

YAML検証を試しましたが、すべて問題ないとのことです。

「いいね!」 1

バグだと思います

「いいね!」 1

何かあります。

しかし、アプリの app.yml をそのままコピー&ペーストできます。そうすれば、もっと賢い人が確認できます。なぜなら今、何があるのか、何がないのか誰も知らないからです。

「いいね!」 2

安全な情報(パスワードなど)を除いた、完全な app.yml を共有していただけますか?

「いいね!」 1

## これは、すべてが1つになったスタンドアロンのDiscourse Dockerコンテナテンプレートです
##
## このファイルを変更した後は、必ず再構築してください
## /var/discourse/launcher rebuild app
##
## 編集は*非常に注意深く*行ってください!
## YAMLファイルは、空白または配置の誤りに非常に敏感です!
## 必要に応じて、このファイルを検証するために http://www.yamllint.com/ を参照してください
hooks:  after_code:    - exec:        cd: $home/plugins        cmd:          - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git          - sudo -E -u discourse git coe tp/gtu.c/dcusedcu-pile-rti
templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Lets Encrypt (https) を追加したい場合は、これらの2行のコメントを解除してください
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## このコンテナはどのTCP/IPポートを公開しますか?
## Discourse が Apache や nginx のような他のウェブサーバーとポートを共有したい場合は、
## 詳細については https://meta.discourse.org/t/17247 を参照してください
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## db_shared_buffers を総メモリの最大 25% に設定します。
  ## 検出されたRAMに基づいてブートストラップによって自動的に設定されるか、上書きできます
  db_shared_buffers: "256MB"

  ## ソートパフォーマンスを向上させる可能性がありますが、接続ごとのメモリ使用量が増加します
  #db_work_mem: "40MB"

  ## このコンテナはどのGitリビジョンを使用しますか? (デフォルト: tests-passed)
  #version: tests-passed
  ## 最大アップロードサイズ (デフォルト: 900m)
  upload_size: 900m

env:
  # DISCOURSE_DEFAULT_LOCALE: en
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8

  ## 同時に処理できるWebリクエスト数は?メモリとCPUコアに依存します。
  ## 検出されたCPUに基づいてブートストラップによって自動的に設定されるか、上書きできます
  UNICORN_WORKERS: 4

  ## TODO: このDiscourseインスタンスが応答するドメイン名
  ## 必須。Discourse は単純なIPアドレスでは機能しません。
  DISCOURSE_HOSTNAME:

  ## 上記で指定されたホスト名 (-h オプション) と同じホスト名でコンテナを起動したい場合は、コメントを解除してください (デフォルトは "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: 初期サインアップ時に管理者および開発者になるメールアドレスのカンマ区切りリスト
  ## 例: 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: ''

  ## TODO: 新規アカウントの検証と通知の送信に使用されるSMTPメールサーバー
  # SMTPアドレス、ユーザー名、パスワードが必要です
  # 注意: SMTPパスワードの '#' 文字は問題を引き起こす可能性があります!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: ###
  DISCOURSE_SMTP_PASSWORD: "##-07e2c238-419aaa92"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトはtrue)
  DISCOURSE_SMTP_DOMAIN:
  DISCOURSE_NOTIFICATION_EMAIL:

  ## Lets Encrypt テンプレートを追加した場合、無料のSSL証明書を取得するには以下をコメント解除してください
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## このDiscourseインスタンスのHTTPまたはHTTPS CDNアドレス(プル用に設定)
  ## 詳細については https://meta.discourse.org/t/14857 を参照してください
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## IPアドレスルックアップ用のMaxMindジオロケーションIPアドレスキー
  ## 詳細については https://meta.discourse.org/t/-/137387/23 を参照してください
  #DISCOURSE_MAXMIND_LICENSE_KEY: ##

## Dockerコンテナはステートレスです。すべてのデータは/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 "カスタムコマンドの開始"
  ## 初回登録時の「From」メールアドレスを設定したい場合は、コメントを解除して変更してください:
  ## 初回のサインアップメールを受信したら、行を再度コメントアウトしてください。一度だけ実行する必要があります。
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "カスタムコマンドの終了"

ファイルの先頭がこれであってはならないと思います。
hooks: after_code: - exec: cd: $home/plugins cmd: - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git - sudo -E -u discourse git coe tp/gtu.c/dcusedcu-pile-rti

また、LANG: en_US.UTF-8 行の下に 2 行足りません。

LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en

気づいていないものがもっとあるかもしれませんが、これはデフォルトのファイルですので、比較してみてください。

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 posts:rebake
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

まあ、これは私のものから取ったものなので、正確ではありませんが、行やインデントなどは似ているはずです。

「いいね!」 1

私を圧倒しますね :rofl:

あの惨状を修正する最速かつ最も簡単な方法は、新しい ./discourse-setup を実行することだと思いますか?