正确的拉动 edxops/forums 方式
Correct pulling edxops/forums way
我正在为 OpenEdx
.
的作品制作自己的开发堆栈
我从 edx 中提取了官方 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
图片以及我如何才能正确提供它感到困惑。
谁能帮帮我?
- 如何提供?
- 如何 运行 它(命令)?
更新:
我有一个新配置:
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已经被容器中的进程运行使用了。虽然容器只是 运行ning 一个进程,但我看不出这里使用进程管理器的目的。因此,如果您正在创建图像的本地副本,只需删除它即可。但是现在先不管它,我提供的 CMD
是在容器中启动进程的正确方法。
Startup: 根据docker图像的CMD
的启动顺序是:
docker run => supervisord => launch script
其中启动脚本 /edx/app/forum/forum-supervisor.sh
负责:
- 正在从
/edx/app/forum/forum_env
. 加载环境变量
- 正在将目录切换到
/edx/app/forum/cs_comments_service
。
- 正在启动
unicorn
服务器。
此外,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: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"
使用此信息,您可以 运行 具有所需配置的映像。
例如,根据您在 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'
否则,如果您想避免编写所有这些变量,只需编写一个自定义脚本来为您完成,或者使用将与这些配置结合的默认命令启动。
我正在为 OpenEdx
.
我从 edx 中提取了官方 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
图片以及我如何才能正确提供它感到困惑。
谁能帮帮我? - 如何提供? - 如何 运行 它(命令)?
更新:
我有一个新配置:
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已经被容器中的进程运行使用了。虽然容器只是 运行ning 一个进程,但我看不出这里使用进程管理器的目的。因此,如果您正在创建图像的本地副本,只需删除它即可。但是现在先不管它,我提供的
CMD
是在容器中启动进程的正确方法。Startup: 根据docker图像的
CMD
的启动顺序是:docker run => supervisord => launch script
其中启动脚本
/edx/app/forum/forum-supervisor.sh
负责:- 正在从
/edx/app/forum/forum_env
. 加载环境变量
- 正在将目录切换到
/edx/app/forum/cs_comments_service
。 - 正在启动
unicorn
服务器。
- 正在从
此外,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: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"
使用此信息,您可以 运行 具有所需配置的映像。
例如,根据您在 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'
否则,如果您想避免编写所有这些变量,只需编写一个自定义脚本来为您完成,或者使用将与这些配置结合的默认命令启动。