2017-05-29 12 views
7

Tôi đang tạo ra công cụ riêng cho công việc với OpenEdx.Hiệu chỉnh kéo edxops/diễn đàn theo cách

Tôi đã lấy kho chính thức devstack từ edx và tôi đang sửa đổi nó.

Tôi đang thử thêm forums vào ngăn xếp của mình nhưng tôi không thể chạy kể từ khi trình tạo docker.

tôi thêm này để composer file:

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 

Tôi đang nhầm lẫn về Mà lệnh chính xác trong chạy:

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' 

Đây là lệnh cho studio.

forums: 
    command: bash -c 'source /edx/app/forum/cs_comments_service_env && ruby app.rb -p 18080' 

Tôi đã thử với điều này nhưng thư mục không tồn tại.

Vì vậy, tôi đã cố gắng với: command: bash -c 'ruby app.rb -p 18080' nhưng tôi nhận được lỗi này:

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

Vì vậy, tôi là nhầm lẫn về hình ảnh forums và về làm thế nào tôi có thể cung cấp nó cho các công trình một cách chính xác.

Có ai có thể giúp tôi không? - Cách cung cấp? - Làm thế nào để chạy nó (lệnh)?

UPDATE:

Tôi có một cấu hình mới:

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 

Nhưng tôi vẫn còn có vấn đề này:

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 

Nhưng, tại sao?

Trả lời

4

Tôi đã kiểm tra hình ảnh và tìm ra các chi tiết hữu ích khi chạy vùng chứa. Tôi sẽ liệt kê những phát hiện của tôi như sau:

  • Supervisord: Supervisord đã được sử dụng để chạy các quá trình trong container. Mặc dù vùng chứa chỉ chạy một quy trình duy nhất nhưng tôi không thấy mục đích sử dụng trình quản lý quy trình tại đây. Vì vậy, nếu bạn đang tạo một bản sao của hình ảnh địa phương chỉ cần thoát khỏi nó. Nhưng bây giờ để lại nó, các CMD Tôi đang cung cấp là đúng cách để tung ra một quá trình trong một container.

  • Startup: Trình tự khởi động theo CMD của hình ảnh Docker là:

    docker run => supervisord => launch script 
    

    nơi ra mắt kịch bản là /edx/app/forum/forum-supervisor.sh trách nhiệm:

    1. biến tải môi trường từ /edx/app/forum/forum_env.
    2. Chuyển thư mục thành /edx/app/forum/cs_comments_service.
    3. Bắt đầu máy chủ unicorn.

Ngoài ra, ruby ​​được lắp đặt tại một con đường tùy chỉnh như sau:

[email protected]:/edx/app# which ruby 
    /edx/app/forum/.rbenv/shims/ruby 

biến Vì vậy, môi trường cần phải được nạp để sử dụng nó. Các biến môi trường được tải như một phần của khởi động bao gồm:

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" 

Với thông tin này bạn có thể chạy hình ảnh với cấu hình bắt buộc.

Ví dụ: thiết lập danh sách các biến phù hợp với cấu hình của bạn trong phần environment. Bạn sẽ cần phải đặt tất cả các biến này trong tệp yml. Sau khi thực hiện các command nên

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

khác nếu bạn muốn tránh phải viết tất cả các biến này chỉ cần viết một kịch bản tùy chỉnh để làm điều đó cho bạn hoặc khởi động với lệnh mặc định sẽ được kết hôn với những cấu hình.

Các vấn đề liên quan