Public Repository

Last pushed: 10 months ago
Short Description
epam ngb tgenome 966
Full Description

docker run -it -p 8080:8080 -v $HOME/data:/opt/data ignik/epam_ngb
http://localhost:8080/catgenome
http://localhost:8080/manager admin:admin

Docker Pull Command
Owner
ignik

Comments (1)
ignik
10 months ago

Докер EPAM NGB catgenome 966

Предварительные действия

Предполагается, что у нас есть консоль на unix'овой машине. На ней есть docker sudo apt install -y docker docker.io , bash версии 4 (свежий) и curl. Рекомендую сразу написать
echo "alias d=docker" >> ~/.bashrc
если это ещё не сделано.

Убеждаемся id что текущий пользователь входит в группу docker, иначе:
sudo gpasswd -a $USER docker; logout; login.

Проверим, что есть 10Gb свободного места и что docker работает:
docker run --rm hello-world

Ключ --rm означает, что контейнер после окончания работы будет уничтожен. А свежевыкаченный имидж придётся за собой чистить руками: docker rmi hello-world

Запуск имиджа NGB catgenome

Имидж построен на базе dordoka/tomcat имиджа, в который положен ngb сервер catgenome-966.war и конфигурационные файлы данных. Для запуска сервера необходимо смапировать полный путь к данным на хосте (зададим его в переменной $DIR) в путь в контейнере.

DIR=$HOME/data # tune by place
docker run -it -v $DIR:/opt/data -p 8080:8080 ignik/epam_ngb

Монтируется каталог /home/igor/data хоста в /opt/data контейнера. Мапируется 8080 порт хоста в 8080 контейнера ( -p host:cont ) Из https://hub.docker.com выкачивается имидж ignik/epam_pub, создаётся контейнер и запускается. Ждём некоторое время, проверяем работу заходя на порт http://хост:8080/catgenome

Полное описание команды docker run можно найти на
https://docs.docker.com/engine/reference/run/

Список имиджей на хосте можно посмотреть командой docker images, список контейнеров docker ps -a, уничтожить контейнер можно командой docker rm $id, а имидж - командой docker rpi $id

После запуска tomcat и catgenome мы можем либо открыть ещё одно окно терминала, либо остановить контейнер по Ctrl-C, а затем перезапустить его в background:
ID=$( docker ps -l -q ); docker start $ID

Регистрацция данных

Далее нам требуются два костыля для регистрации референсного генома и наборов данных: /opt/bin/{reg_ref.sh,reg_data.sh}

Получим их из контейнера:
ID=$( docker ps -l -q )
docker cp $ID:/opt/bin/reg_ref.sh .
docker cp $ID:/opt/bin/reg_data.sh .

Воспользуемся reg_ref.sh для регистрации референсного генома:
./reg_ref.sh /opt/data/Homo_sapiens.GRCh38.dna_sm.primary_assembly.fa.gz ref_GRCh38
путь указывается в соответствии с ключом -v при запуске контейнера.

Этот процесс занимает от нескольких минут до часа в зависимости от скорости дисковой памяти. Чтобы не было скучно хорошо иметь открытый интерактивный терминал контейнера (на него выводится debug log, иллюстрирующий работу сервера. По результатам мы получим либо ответ, заканчивающийся "status":"OK", либо сообщение об ошибке, которое нужно направить разработчикам.

Затем воспользуемся reg_data.sh для регистрации данных. К сожалению при распаковывании файла gtf.gz мы получим ошибку '{"message":"Invalid GZIP header","status":"ERROR"}' несмотря на то, что файл совершенно исправен. Поэтому распакуем его на хосте
gunzip Homo_sapiens.GRCh38.83.sorted.gtf.gz
и скормим серверу при помощи команды:
./reg_data.sh /opt/data/Homo_sapiens.GRCh38.83.sorted.gtf
Этот процесс завершается существенно быстрее.

Теперь сервер можно остановить (Ctrl-C на интерактивной консоли или docker stop $ID) и сохранить имеющийся контейнер в виде нового имиджа: docker commit $ID foo/bar:xyzzy для дальнейшего использования.
https://docs.docker.com/engine/reference/commandline/commit/