正确拉动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
负责:- 从
/edx/app/forum/forum_env
加载环境variables。 - 切换目录到
/edx/app/forum/cs_comments_service
。 - 启动
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。