Techioz Blog

edxops/フォーラムの正しいプル方法

概要

OpenEdx で動作する独自の開発スタックを作成しています。

公式の devstack リポジトリを edx から取得し、変更しています。

スタックにフォーラムを追加しようとしていますが、docker compose のため実行できません。

これをコンポーザーファイルに追加しました。

forums:
    command: bash -c 'source /edx/app/forum/cs_comments_service_env && ruby app.rb -p 18080'
    container_name: edx.devstack.forums
    depends_on:
      #   - xqueue:xqueue
      - mongo
      - elasticsearch
      # - rabbitmq:rabbitmq
      - mysql
      - memcached
    environment:
      CACHE_LOCATION: edx.devstack.memcached:12211
      DB_HOST: edx.devstack.mysql
      TEST_ELASTICSEARCH_URL: "http://edx.devstack.elasticsearch:9200"
    image: edxops/forums:latest
    ports:
      - 4567:4567

どのコマンドを実行するのが正しいのか混乱しています。

studio:
    command: bash -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py cms runserver 0.0.0.0:18010 --settings devstack_docker'

スタジオ用のコマンドです。

forums:
    command: bash -c 'source /edx/app/forum/cs_comments_service_env && ruby app.rb -p 18080'

これを試してみましたが、フォルダーが存在しません。

そこで、コマンド: bash -c ‘ruby app.rb -p 18080’ を試してみましたが、次のエラーが発生しました。

そのため、フォーラムの画像について、またそれが正しく動作するようにどのように提供すればよいかについて混乱しています。

誰か助けてくれませんか?

アップデート:

新しい構成があります:

forums:
    command: bash -c 'cd /edx/app/forum/cs_comments_service && exec /edx/app/forum/cs_comments_service/bin/unicorn -c config/unicorn_tcp.rb'
    container_name: edx.devstack.forums
    depends_on:
      # - xqueue:xqueue
      - mongo
      - elasticsearch
      # - rabbitmq:rabbitmq
      - mysql
      - memcached
    environment:
      CACHE_LOCATION: edx.devstack.memcached:12211
      DB_HOST: edx.devstack.mysql
      SEARCH_SERVER: "http://edx.devstack.elasticsearch:9200"
      TEST_ELASTICSEARCH_URL: "http://edx.devstack.elasticsearch:9200"
      MONGOHQ_URL: "mongodb://cs_comments_service:[email protected]:27017/cs_comments_service"
      GEM_PATH: "/edx/app/forum/.gem"
      GEM_HOME: "/edx/app/forum/.gem"
      RBENV_ROOT: "/edx/app/forum/.rbenv"
    image: edxops/forum:latest
    ports:
      - 4567:4567

しかし、私はまだこの問題を抱えています:

docker-compose logs -f --tail=500 | grep edx.devstack.forums
Attaching to edx.devstack.forums, edx.devstack.chrome, edx.devstack.firefox, edx.devstack.credentials, edx.devstack.discovery, edx.devstack.elasticsearch, edx.devstack.ecommerce, edx.devstack.studio, edx.devstack.lms, edx.devstack.memcached, edx.devstack.mysql, edx.devstack.mongo
edx.devstack.forums | /usr/bin/env: ‘ruby’: No such file or directory

しかし、なぜ?

解決策

イメージを調べて、コンテナーの実行に役立つ詳細を把握しました。以下に私の発見をリストします。

また、Ruby は次のようにカスタム パスにインストールされます。

    root@8a5de1d489c5:/edx/app# which ruby 
    /edx/app/forum/.rbenv/shims/ruby

したがって、それを使用するには環境変数をロードする必要があります。起動の一部としてロードされる環境変数には次のものがあります。

export LISTEN_HOST="0.0.0.0"
export NEW_RELIC_APP_NAME="default_env-default_deployment-forum"
export DATA_DIR="/edx/var/forum"
export LISTEN_PORT="4567"
export MONGOHQ_URL="mongodb://cs_comments_service:[email protected]:27017/cs_comments_service"
export GEM_PATH="/edx/app/forum/.gem"
export RACK_ENV="staging"
export WORKER_PROCESSES="4"
export NEW_RELIC_ENABLE="False"
export SINATRA_ENV="staging"
export SEARCH_SERVER="http://es.edx:9200"
export PATH="/edx/app/forum/cs_comments_service/bin:/edx/app/forum/.rbenv/bin:/edx/app/forum/.rbenv/shims:/edx/app/forum/.gem/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export API_KEY="password"
export HOME="/edx/app/forum"
export GEM_HOME="/edx/app/forum/.gem"
export RBENV_ROOT="/edx/app/forum/.rbenv"

この情報を使用すると、必要な構成でイメージを実行できます。

たとえば、環境セクションの構成に従って変数のリストを設定します。これらの変数をすべて yaml ファイルに設定する必要があります。完了したら、コマンドは次のようになります。

bash -c 'cd /edx/app/forum/cs_comments_service && exec /edx/app/forum/cs_comments_service/bin/unicorn -c config/unicorn_tcp.rb'

これらすべての変数を書きたくない場合は、それを実行するカスタム スクリプトを書くか、これらの設定に関連付けられるデフォルトのコマンドで起動してください。