2017-05-29 42 views
7

Tworzę własny devstack do prac z OpenEdx.Prawidłowy sposób ciągnięcia edxops/forum

Wyciągnąłem oficjalne repozytorium devstack z edx i modyfikuję je.

Próbuję dodać forums do mojego stosu, ale nie mogę uruchomić, ponieważ doker komponuje.

dodałem to do composer pliku:

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 

Jestem mylić o wich właściwą komendę RUN:

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' 

Jest to polecenie dla studia.

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

Próbowałem z tym, ale folder nie istnieje.

więc próbowałem z: command: bash -c 'ruby app.rb -p 18080' ale ja dostać ten błąd:

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

Tak, jestem mylić o forums obrazu i o tym, jak mogę dostarczyć go do robót poprawnie.

Czy ktoś może mi pomóc? - W jaki sposób go dostarczyć? - Jak uruchomić (polecenie)?

UPDATE:

Mam nową konfigurację:

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 

ale wciąż mam ten problem:

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 

, ale dlaczego?

Odpowiedz

4

Sprawdziłem obraz i wymyśliłem szczegóły, które będą pomocne w uruchomieniu pojemnika. Wymienię w dół moje wyniki jak poniżej:

  • Supervisord: Supervisord zostały wykorzystane do uruchomienia procesu w zbiorniku. Chociaż kontener działa tylko w jednym procesie, nie widzę tutaj celu używania menedżera procesów. Tak więc, jeśli tworzysz lokalną kopię obrazu, po prostu się go pozbyć. Ale na razie zostaw to, dostarczam CMD prawidłowy sposób uruchomienia procesu w kontenerze.

  • Uruchomienie: Sekwencja uruchamiania zgodnie CMD z Döcker obrazu jest:

    docker run => supervisord => launch script 
    

    gdzie uruchomienie skryptu jest /edx/app/forum/forum-supervisor.sh odpowiedzialny za:

    1. Ładowanie zmiennych środowiskowych z /edx/app/forum/forum_env.
    2. Przełączanie katalogu na /edx/app/forum/cs_comments_service.
    3. Uruchamianie serwera unicorn.

Ponadto, rubin jest zainstalowany w ścieżce niestandardowej następujące:

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

zmienne środowiskowe więc trzeba załadować go używać. Zmienne środowiskowe załadowane w ramach uruchamiania obejmują:

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" 

Dzięki tym informacjom można uruchomić obraz z wymaganą konfiguracją.

Na przykład ustaw listę zmiennych zgodnie z konfiguracją w sekcji environment. Będziesz musiał ustawić wszystkie te zmienne w pliku yml. Raz zrobił to command powinny być

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

indziej jeśli chcesz uniknąć piśmie wszystkie te zmienne tylko napisać niestandardowy skrypt zrobi to za Ciebie lub uruchomić z domyślną komendy, które zostaną w związku małżeńskim z tych konfiguracji.