最終更新: a few seconds ago Remove Netlify-related code from main (grafted, HEAD)
CIRCUS CS Docker 化に関する疑問点・構成ノート
参考
- Docker の管理ラッパ dockerode
- node.js から Docker を操作する
- Awesome Node.js : 素晴しい Node.js フレームワーク・ライブラリ・ソフトウェア・リソースの数々
キュー管理システム(PQMS)
- wait キュー
- processing キュー
- finished キュー
からなるのがキューでやろうと思った場合...だけども。
Wrap wrapped docker
// wrapper for dockcode
class PMDockerContainer extends EventEmitter {
constructor( {jobId, mnt, timeout} )
{
}
}
const container = new PMDockerContainer(1,'/hoge/piyo/foo/');
container.on('start', () => ...)
container.on('timeout', () => ...)
container.on('finish', () => ...)
Docker サンプル
cd /home/kano/work/circus/docker_test/build docker build -t test .
VOLUME_ROOT=/home/kano/work/circus/docker_test/volumes rm -rf ${VOLUME_ROOT}/* JOB_ID=$(date | md5sum | cut -d\ -f1) mkdir -p ${VOLUME_ROOT}/${JOB_ID}/{in,out}
Parse DICOM dummy
touch ${VOLUME_ROOT}/${JOB_ID}/in/{000.raw,000.mhd,000.txt} touch ${VOLUME_ROOT}/${JOB_ID}/in/{000.raw,001.mhd,001.txt} touch ${VOLUME_ROOT}/${JOB_ID}/in/{000.raw,002.mhd,002.txt}
find ${VOLUME_ROOT}
Docker run
docker run
-v ${VOLUME_ROOT}/${JOB_ID}/in:/circus/src
-v ${VOLUME_ROOT}/${JOB_ID}/out:/circus/dest
test
別々に接続する理由について
find ${VOLUME_ROOT}/${JOB_ID}/out -type f | xargs cat
!!!! 引数を設定??? !!!!
src > in dest > out
めも
export function enQueue(pluginJobRequest): Promise<jobId: string>
{
const jobQueue = ...
wait.push(jobQueue);
// フロント側DB > (F)in_queue へ更新しない (UIがやる)
}
export function deQueue(maxPararellExectionNumber: number): Promise<???>
{
const queueItem = wait.shift();
processing.push(queueItem);
// フロント側DB > (F) processing へ更新(こちらでやる)
// /in にボリュームを作成
// DICOMデータをパースして /in/???.raw, /in/???.mhd, /in/???.txt へ書き込み
// DICOM(個人情報を含む) は置かない
// 001.raw (* には何がどう入るべきか)
// *.mhd (* には何がどう入るべきか)
// *.txt (* には何がどう入るべきか)
/**
* Docker 起動処理
*/
const proccess = KickSomeDocker
.then( () => {} )
.catch(e=>{});
proccess
}