2017-05-29 51 views
7

我正在与OpenEdx作品我自己的devstack。正确拉动edxops /论坛的方式

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

我试图添加forums到我的堆栈,但我无法运行,因为码头构成。

我说这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形象,我如何能够正确地提供它的作品。

任何人都可以帮助我吗? - 如何提供? - 如何运行它(命令)?

UPDATE:

我有一个新的配置:

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 

但是,为什么呢?

回答

4

我检查了图像并找出了有助于运行容器的详细信息。我会列出我的调查结果如下:

  • Supervisord:Supervisord已被用来运行在容器中的过程。虽然容器只运行一个进程,但我没有看到在这里使用进程管理器的目的。因此,如果您正在创建图像的本地副本,请将其除去。但现在离开它,我提供的CMD是在容器中启动进程的正确方法。

  • 启动:启动顺序按泊坞窗图像的CMD是:

    docker run => supervisord => launch script 
    

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

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

此外,红宝石被安装在如下的自定义路径:

[email protected]:/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" 

有了这些信息,您可以运行具有所需配置的映像。

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

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

否则,如果你想避免写所有这些变量只写一个自定义脚本来为你做它或将要结婚,这些配置默认的命令来启动。