正确拉动edxops /论坛的方式

我正在使用OpenEdx自己的OpenEdx

我从devstack拉了官方devstack存储库,我正在修改它。

我试图添加forums到我的堆栈,但我不能运行,因为docker组成。

我添加到composer文件:

 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' 

我试过这个,但该文件夹不存在。

所以我试着用: command: bash -c 'ruby app.rb -p 18080'但是我得到这个错误:

 edx.devstack.forums | bash: ruby: command not found edx.devstack.forums exited with code 127 

所以,我很困惑的forums形象,以及如何提供正确的作品。

谁能帮我? – 如何提供? – 如何运行(命令)?

更新:

我有一个新的configuration:

 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:password@mongo.edx: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 

但为什么?

我检查了这个图像,找出了有助于运行容器的细节。 我将列出我的发现如下:

  • Supervisord :Supervisord已被用于在容器中运行该进程。 虽然容器只运行一个进程,但是在这里我没有看到使用进程pipe理器的目的。 所以,如果你正在创build一个图像的本地副本只是摆脱它。 但是现在离开它,我提供的CMD是在容器中启动一个进程的正确方法。

  • 启动 :docker图像的CMD启动顺序为:

     docker run => supervisord => launch script 

    其中启动脚本是/edx/app/forum/forum-supervisor.sh负责:

    1. /edx/app/forum/forum_env加载环境variables。
    2. 切换目录到/edx/app/forum/cs_comments_service
    3. 启动unicorn服务器。

另外,ruby安装在一个自定义path如下:

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

所以环境variables需要加载才能使用它。 作为启动的一部分加载的环境variables包括:

 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:password@mongo.edx: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" 

有了这些信息,你可以运行所需的configuration图像。

例如,相应地将variables列表设置为environment部分中的configuration。 您将需要在yml文件中设置所有这些variables。 一旦完成command应该是

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

否则,如果你想避免写所有这些variables,只需写一个自定义脚本来为你做,或者用默认的命令启动,这些命令将结合这些configuration。