我正在为OpenEdx
做我自己的devstack。
我从edx中提取了官方的devstack
仓库,并修改了它。
我正在尝试将forums
添加到我的堆栈中,但由于Docker compose,我无法运行。
在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退出,代码为127
因此,我对forums
映像感到困惑,也不知道如何提供它才能正常工作。
有人能帮帮我吗?
- 如何提供?
- 如何运行它(命令)?
更新:
我有一个新的配置:
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
但是,为什么呢?
1条答案
按热度按时间wrrgggsh1#
我检查了图像,并找出了有助于运行容器的细节。我将把我的发现列举如下:
*Supervisord:Supervisord已用于在容器中运行进程。虽然容器只运行一个进程,但我看不出在这里使用进程管理器的目的。因此,如果您正在创建图像的本地副本,请删除它。但是现在先别管它,我提供的
CMD
是在容器中启动进程的正确方法。1.启动:按照docker image的
CMD
启动顺序为:其中启动脚本
/edx/app/forum/forum-supervisor.sh
负责:1.从
/edx/app/forum/forum_env
加载环境变量。1.将目录切换到
/edx/app/forum/cs_comments_service
。1.启动
unicorn
服务器。此外,ruby安装在自定义路径中,如下所示:
因此,需要加载环境变量才能使用它。作为启动的一部分加载的环境变量包括:
有了这些信息,您就可以使用所需的配置运行映像。
例如,根据
environment
部分中的配置设置变量列表。您需要在yml
文件中设置所有这些变量。一旦完成,command
应该是否则,如果你想避免写所有这些变量,只需写一个自定义脚本来为你做这件事,或者用默认命令启动,这将与这些配置结婚。